Rumah > pembangunan bahagian belakang > Golang > Mengapakah `fmt.Printf` dengan `%g` dan Medan Lebar/Ketepatan Berkelakuan Tidak Dijangka?

Mengapakah `fmt.Printf` dengan `%g` dan Medan Lebar/Ketepatan Berkelakuan Tidak Dijangka?

Susan Sarandon
Lepaskan: 2024-10-26 17:02:02
asal
459 orang telah melayarinya

Why Does `fmt.Printf` with `%g` and Width/Precision Fields Behave Unexpectedly?

fmt.Printf dengan Width and Precision Fields dalam %g Berkelakuan Tidak Dijangka

Apabila cuba memformat terapung dengan lebar yang konsisten menggunakan fmt.Printf (), ia mungkin tidak berkelakuan seperti yang diharapkan apabila menggunakan penentu format %g dengan kedua-dua medan lebar dan ketepatan.

Menurut dokumentasi, medan ketepatan untuk %g menetapkan bilangan jumlah digit, tidak termasuk mana-mana pendahuluan sifar. Walau bagaimanapun, penentu format %g mempunyai beberapa gelagat unik yang boleh mengelirukan.

Sifar Utama dan Pengiraan Digit:

  • Sifar pendahuluan dalam bahagian pecahan ialah tidak dikira sebagai digit.
  • Sifar mengekor selepas digit bukan sifar dikira sebagai digit.

Contoh:

  • fmt .Printf("%.4g", 0.12345) memberikan 0.1235.
  • fmt.Printf("%.4g", 0.012345) memberikan 0.01235.
  • fmt.4grinf("%. , 0.0012345) memberikan 0.001234.

Ketepatan dan Lebar:

  • Medan lebar menentukan lebar minimum, termasuk sebarang
  • Jika bilangan digit melebihi lebar yang ditentukan, medan lebar akan diabaikan.

Kes Anda:

Dalam contoh anda, anda menggunakan .9g, yang menentukan lebar minimum 10 dan sejumlah 9 digit. Walau bagaimanapun, gelagat berikut berlaku:

    0.0606060606060606: Memerlukan 12 digit, jadi lebar minimum diabaikan.
  • 0.3333333333333333: Memerlukan 12 digit, jadi abaikan digit. >
  • 0.05 dan 0.4: Memerlukan 9 digit, yang kurang daripada lebar minimum, supaya ia berlapik dengan ruang.
  • 0.1818181818181818: Memerlukan 9 digit selepas pembundaran, jadi lebar minimum diabaikan.

Atas ialah kandungan terperinci Mengapakah `fmt.Printf` dengan `%g` dan Medan Lebar/Ketepatan Berkelakuan Tidak Dijangka?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan