Dokumentasi untuk medan format fmt.Printf untuk nilai titik terapung menyatakan bahawa:
"Untuk nilai titik terapung, lebar menetapkan lebar minimum medan
dan ketepatan menetapkan bilangan tempat selepas perpuluhan, jika
sesuai, kecuali bahawa untuk %g/%G ia menetapkan jumlah digit."
Bahagian yang mengelirukan terletak pada penggunaan "ia" dalam ayat terakhir. Ia sebenarnya merujuk kepada "ketepatan", bukan "lebar."
Bertentangan dengan gerak hati bahawa %.9g harus menghasilkan sejumlah 9 digit bererti, ia sebenarnya hanya mempertimbangkan digit selepas titik perpuluhan.
Sebagai contoh, 123456.789 akan diformatkan sebagai 123.4e 03 kerana %.9g berkesan memotong mana-mana sifar pendahuluan.
Sebaliknya, 0.0000032345 akan diformatkan sebagai 451. e-06 kerana %.9g mengambil kira semua digit bererti selepas titik perpuluhan.
Medan lebar menentukan lebar minimum bagi keseluruhan rentetan yang diformatkan, termasuk perpuluhan titik dan eksponen (jika ada).
Medan ketepatan, seperti yang diterangkan di atas, menetapkan bilangan digit bererti selepas titik perpuluhan.
Untuk %g, medan ketepatan mengatasi medan lebar . Walau bagaimanapun, jika rentetan yang diformatkan melebihi lebar yang ditentukan, ia akan melangkaui lebar yang ditentukan.
Ingat bahawa contoh melibatkan pemformatan nilai titik terapung berikut menggunakan .9g:
Atas ialah kandungan terperinci Bagaimanakah Medan Ketepatan Sebenarnya Berfungsi dengan `%g` dalam `fmt.Printf`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!