Heim >Backend-Entwicklung >Golang >Wie geht fmt.Printf mit führenden Nullen um, wenn Breite und Genauigkeit für Gleitkommawerte verwendet werden?

Wie geht fmt.Printf mit führenden Nullen um, wenn Breite und Genauigkeit für Gleitkommawerte verwendet werden?

Linda Hamilton
Linda HamiltonOriginal
2024-10-26 02:05:28747Durchsuche

  How Does fmt.Printf Handle Leading Zeros When Using Width and Precision for Floating-Point Values?

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!

Stellungnahme:
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