So konvertieren Sie Float64 in eine Zeichenfolge mit fester Breite und maximal signifikanten Ziffern in Go
In Go, wenn Sie float64-Werte innerhalb eines festen Werts drucken In einer Breitentabelle ist es oft wünschenswert, so viele signifikante Ziffern wie möglich beizubehalten. Die Standardformatierung kann jedoch zu einem Präzisionsverlust führen, da bei großen Zahlen automatisch auf die wissenschaftliche Notation umgeschaltet wird.
Die Notwendigkeit einer benutzerdefinierten Formatierungslösung
Für Fälle, in denen Da sowohl die wissenschaftliche Schreibweise als auch die reguläre Form nicht akzeptabel sind, ist ein angepasster Formatierungsansatz erforderlich. Das Hauptaugenmerk sollte auf der Berechnung der optimalen Genauigkeit liegen, die in die angegebene Breite passt und gleichzeitig die höchstwertigen Ziffern beibehält.
Vorgeschlagene Lösung
Die folgende Implementierung bietet eine einfache Lösung:
<br>// format12 formatiert x mit 12 Zeichen long.<br>func format12(x float64) string {</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">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)
}
Diese Lösung verwendet einen zweistufigen Prozess:
Bestimmung der Präzision:
Erstellen der Formatierung Zeichenfolge:
Beispielverwendung und -ausgabe
Um die Funktionalität zu demonstrieren, betrachten wir einige Beispiele Werte:
<br>fs := []float64{0, 1234.567890123, 0.1234567890123, 123456789012.0, 1234567890123.0,</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">9.405090880450127e+9, 9.405090880450127e+19, 9.405090880450127e+119}
für _, f := Bereich fs {
fmt.Println(format12(f))
}
Ausgabe:
<br>0,000 0000000<br>0,1234567890<br>1234,5678901<br>123456789012<br>1,234568e 12<br>9405090880.5<br>9.405091e 19<br>9.40509e 119<br>
Diese Lösung bietet die gewünschte Formatierung mit fester Breite und behält gleichzeitig die höchstwertigen Ziffern bei, was eine klare und klare Darstellung ermöglicht Prägnante Anzeige von float64-Werten in verschiedenen Szenarien.
Das obige ist der detaillierte Inhalt vonWie formatiere ich einen Go float64-Wert in eine Zeichenfolge mit fester Breite und maximal signifikanten Ziffern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!