Heim >Backend-Entwicklung >Golang >Wie geht fmt.Printf mit führenden Nullen um, wenn Breite und Genauigkeit für Gleitkommawerte verwendet werden?
fmt.Printf-Breite und Präzisionssyntaxdiskrepanz
Die Verwendung von fmt.Printf mit Breiten- und Präzisionsfeldern für Gleitkommawerte kann sein verwirrend aufgrund einer Diskrepanz in der Dokumentation. Die Anweisung:
"Bei Gleitkommawerten legt width die Mindestbreite des Felds fest und precision legt gegebenenfalls die Anzahl der Nachkommastellen fest, mit der Ausnahme, dass für %g/%G die Summe festgelegt wird Anzahl der Ziffern.“
Obwohl es grammatikalisch korrekt ist, führt es zu Mehrdeutigkeiten, da sich „es“ eher auf Präzision als auf Breite bezieht. Dies kann zu unerwartetem Formatierungsverhalten führen.
Präzision für Gleitkomma-Notationen
Berücksichtigen Sie die folgenden Gleitkommawerte:
123.45 12312.2 1.6069 0.6069 0.0006069
Wann Bei Verwendung von fmt.Printf("%.4g") lautet die Ausgabe:
123.5 1.231e+04 1.607 0.6069 0.0006069
Beachten Sie, dass das Präzisionsfeld (.4) die Gesamtzahl der Ziffern angibt, mit Ausnahme von Dezimalstellen und Exponenten. Auch wenn die letzten beiden Werte führende Nullen haben, zählen sie dennoch als Ziffern und werden nicht abgeschnitten.
Breitenangaben
Andererseits das Breitenfeld (z. B. g) gibt die Mindestbreite des Feldes an, einschließlich Dezimalstellen und Exponenten. Wenn der formatierte Wert diese Breite überschreitet, wird er nicht abgeschnitten. Führende Nullen werden jedoch erst dann zur Breite gezählt, wenn vier oder mehr führende Nullen vorhanden sind.
Beispiel
In Ihrem Fall gibt die Formatzeichenfolge .9g an eine Mindestbreite von 10 und eine Gesamtzahl von 9 Ziffern, ohne führende Nullen. Die resultierende Formatierung ist:
0.0606060606060606: 9 digits, 12 width 0.3333333333333333: 9 digits, 11 width 0.05: 3 digits, 10 width (padded with spaces) 0.4: 2 digits, 10 width (padded with spaces) 0.1818181818181818: 9 digits (rounded), 11 width
Dies zeigt das Zusammenspiel zwischen Präzisions- und Breitenfeldern und wie führende Nullen die endgültige Formatierung beeinflussen können.
Das obige ist der detaillierte Inhalt vonWie geht fmt.Printf mit führenden Nullen um, wenn Breite und Genauigkeit für Gleitkommawerte verwendet werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!