Heim > Backend-Entwicklung > Golang > Wie konvertiere ich Float64 in eine Zeichenfolge mit fester Breite und maximal signifikanten Ziffern in Go?

Wie konvertiere ich Float64 in eine Zeichenfolge mit fester Breite und maximal signifikanten Ziffern in Go?

Linda Hamilton
Freigeben: 2024-12-05 15:46:10
Original
859 Leute haben es durchsucht

How to Convert Float64 to a Fixed-Width String with Maximum Significant Digits in Go?

Konvertieren von Float64 in einen String mit fester Breite und maximaler signifikanter Ziffer

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.

Lösung: Benutzerdefinierte Formatierung

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)
}
Nach dem Login kopieren

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))
}
Nach dem Login kopieren

Ausgabe:

0.0000000000
0.1234567890
1234.5678901
123456789012
1.234568e+12
9405090880.5
9.405091e+19
9.40509e+119
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage