Apabila membentangkan nombor titik terapung dalam jadual lebar tetap, kebimbangan timbul mengenai pemeliharaan digit bererti. Fungsi fmt.Printf standard menawarkan kawalan terhad ke atas aspek ini.
Untuk menangani isu ini, kami boleh melaksanakan fungsi pemformatan tersuai yang menentukan bilangan optimum digit bererti kepada muat dalam lebar yang ditentukan. Ini melibatkan menganalisis nombor yang dipersoalkan dan memilih antara notasi saintifik dan bentuk biasa berdasarkannya magnitud.
Pelaksanaan:
// format12 formats x to be 12 chars long. func format12(x float64) string { if x >= 1e12 { // For scientific notation, determine the width of the exponent. s := fmt.Sprintf("%.g", x) format := fmt.Sprintf("%%12.%dg", 12-len(s)) return fmt.Sprintf(format, x) } // For regular form, determine the width of the fraction. 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) }
Ujian:
fs := []float64{0, 1234.567890123, 0.1234567890123, 123456789012.0, 1234567890123.0, 9.405090880450127e+9, 9.405090880450127e+19, 9.405090880450127e+119} for _, f := range fs { fmt.Println(format12(f)) }
Output:
0.0000000000 0.1234567890 1234.5678901 123456789012 1.234568e+12 9405090880.5 9.405091e+19 9.40509e+119
Atas ialah kandungan terperinci Bagaimana untuk Menukar Float64 kepada Rentetan Lebar Tetap dengan Digit Ketara Maksimum dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!