Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Memformat Nilai Go float64 ke dalam Rentetan Lebar Tetap dengan Digit Ketara Maksimum?
Cara Menukar Float64 kepada Rentetan Lebar Tetap dengan Digit Ketara Maksimum dalam Go
In Go, apabila mencetak nilai float64 dalam tetapan jadual lebar, selalunya wajar untuk mengekalkan sebanyak mungkin digit bererti. Walau bagaimanapun, pemformatan lalai boleh mengakibatkan kehilangan ketepatan disebabkan oleh penukaran automatik kepada tatatanda saintifik untuk nombor yang besar.
Keperluan untuk Penyelesaian Pemformatan Tersuai
Untuk kes di mana kedua-dua notasi saintifik dan bentuk biasa tidak boleh diterima, pendekatan pemformatan tersuai diperlukan. Tumpuan utama hendaklah pada pengiraan ketepatan optimum yang sesuai dalam lebar yang ditentukan sambil mengekalkan digit bererti maksimum.
Penyelesaian Cadangan
Pelaksanaan berikut menawarkan penyelesaian yang mudah:
// format12 format x menjadi 12 aksara panjang.
func format12(x float64) rentetan {
if x >= 1e12 { s := fmt.Sprintf("%.g", x) format := fmt.Sprintf("%%12.%dg", 12-len(s)) return fmt.Sprintf(format, x) } s := fmt.Sprintf("%.0f", x) if len(s) == 12 { return s } format := fmt.Sprintf("%%%d.%df", len(s), 12-len(s)-1) return fmt.Sprintf(format, x)
}
Penyelesaian ini menggunakan proses dua langkah:
Menentukan Ketepatan:
Mencipta Rentetan Pemformatan:
Penggunaan dan Output Contoh
Untuk menunjukkan kefungsiannya, mari kita pertimbangkan beberapa nilai sampel:
fs := []float64{0, 1234.567890123, 0.1234567890123, 123456789012.0, 1234567890123.0,
9.405090880450127e+9, 9.405090880450127e+19, 9.405090880450127e+119}
untuk _, f := julat fs {
fmt.Println(format12(f))
}
Output:
0.000 0000000
0.1234567890
1234.5678901
123456789012
1.234568e 12
9405090880.5
9.405091e 19
9.40509e 119
Penyelesaian ini menyediakan pemformatan lebar tetap yang jelas dan tetap yang diingini untuk pemformatan lebar tetap yang jelas dan pra-digit yang diingini paparan ringkas float64 nilai dalam pelbagai senario.
Atas ialah kandungan terperinci Bagaimana untuk Memformat Nilai Go float64 ke dalam Rentetan Lebar Tetap dengan Digit Ketara Maksimum?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!