fmt.Printf Lebar dan Percanggahan Sintaks Ketepatan
Penggunaan fmt.Printf dengan medan lebar dan ketepatan untuk nilai titik terapung boleh mengelirukan kerana percanggahan dalam dokumentasi. Pernyataan:
"Untuk nilai titik terapung, lebar menetapkan lebar minimum medan dan ketepatan menetapkan bilangan tempat selepas perpuluhan, jika sesuai, kecuali untuk %g/%G ia menetapkan jumlah bilangan digit."
Walaupun betul dari segi tatabahasa, ia membawa kepada kekaburan kerana "ia" merujuk kepada ketepatan dan bukannya lebar. Ini boleh mengakibatkan tingkah laku pemformatan yang tidak dijangka.
Ketepatan untuk Notasi Titik Terapung
Pertimbangkan nilai titik terapung berikut:
123.45 12312.2 1.6069 0.6069 0.0006069
Apabila menggunakan fmt.Printf("%.4g"), outputnya ialah:
123.5 1.231e+04 1.607 0.6069 0.0006069
Perhatikan bahawa medan ketepatan (.4) menentukan jumlah bilangan digit, tidak termasuk titik perpuluhan dan eksponen. Oleh itu, walaupun dua nilai terakhir mempunyai sifar pendahuluan, ia masih dikira sebagai digit dan tidak dipotong.
Spesifikasi Lebar
Sebaliknya, medan lebar (cth., g) menentukan lebar minimum medan, termasuk titik perpuluhan dan eksponen. Jika nilai yang diformatkan melebihi lebar ini, ia tidak akan dipotong. Sifar pendahuluan, walau bagaimanapun, tidak dikira ke arah lebar sehingga terdapat empat atau lebih sifar pendahuluan.
Contoh
Dalam kes anda, rentetan format .9g menentukan lebar minimum 10 dan jumlah bilangan digit 9, tidak termasuk sifar pendahuluan. Pemformatan yang terhasil ialah:
0.0606060606060606: 9 digits, 12 width 0.3333333333333333: 9 digits, 11 width 0.05: 3 digits, 10 width (padded with spaces) 0.4: 2 digits, 10 width (padded with spaces) 0.1818181818181818: 9 digits (rounded), 11 width
Ini menunjukkan interaksi antara medan ketepatan dan lebar serta cara sifar pendahuluan boleh menjejaskan pemformatan akhir.
Atas ialah kandungan terperinci Bagaimanakah fmt.Printf Mengendalikan Sifar Utama Apabila Menggunakan Lebar dan Ketepatan untuk Nilai Titik Terapung?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!