Bei der Darstellung von Gleitkommazahlen in Tabellen mit fester Breite treten Bedenken hinsichtlich der Erhaltung signifikanter Ziffern auf. Die Standardfunktion fmt.Printf bietet eine begrenzte Kontrolle über diesen Aspekt.
Um dieses Problem zu beheben, können wir eine benutzerdefinierte Formatierungsfunktion implementieren, die die optimale Anzahl signifikanter Ziffern bestimmt in eine bestimmte Breite passen. Dazu gehört die Analyse der betreffenden Zahl und die Wahl zwischen wissenschaftlicher Schreibweise und regulärer Form basierend auf ihrer Größe.
Implementierung:
// 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) }
Testen:
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)) }
Ausgabe:
0.0000000000 0.1234567890 1234.5678901 123456789012 1.234568e+12 9405090880.5 9.405091e+19 9.40509e+119
Das obige ist der detaillierte Inhalt vonWie konvertiere ich Float64 in eine Zeichenfolge mit fester Breite und maximal signifikanten Ziffern in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!