Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich Gleitkommazahlen zur Anzeige zuverlässig auf zwei Dezimalstellen runden?

Wie kann ich Gleitkommazahlen zur Anzeige zuverlässig auf zwei Dezimalstellen runden?

Barbara Streisand
Barbara StreisandOriginal
2025-01-05 09:00:43831Durchsuche

How Can I Reliably Round Floats to Two Decimal Places for Display?

Begrenzung von Gleitkommazahlen auf zwei Dezimalstellen

Der Versuch, eine Gleitkommazahl mit Standardmethoden wie Round() auf zwei Dezimalstellen zu runden, kann zu unerwarteten Ergebnissen führen . Dies liegt an den inhärenten Einschränkungen der Gleitkommadarstellung, bei der bestimmte Zahlen nicht exakt dargestellt werden können.

In Binärcomputern werden Gleitkommazahlen als ganze Zahlen geteilt durch eine Zweierpotenz gespeichert. Beispielsweise wird 13,95 ungefähr als 125650429603636838/(2**53) dargestellt. Da Gleitkommatypen eine begrenzte Genauigkeit haben (24 Bit für Gleitkommazahlen und 53 Bit für doppelte Genauigkeit), können diese Werte nicht immer präzise dargestellt werden.

Aus diesem Grund kann das Runden einer Gleitkommazahl mit „round()“ möglicherweise nicht möglich sein ein etwas abweichendes Ergebnis erzeugen. Um die gewünschte Genauigkeit von zwei Dezimalstellen für Anzeigezwecke zu erreichen, können alternative Ansätze gewählt werden:

  • Verwenden Sie ganze Zahlen, um Geldwerte in Cent zu speichern, und teilen Sie sie durch 100, um Dollar anzuzeigen.
  • Verwenden Sie Festkomma-Zahlenbibliotheken wie Decimal, um eine exakte Darstellung sicherzustellen.

Beispielsweise runden die folgenden Operationen korrekt a auf zwei Dezimalstellen für die Anzeige:

print("%.2f" % a)  # -> 13.95
print("{:.2f}".format(a))  # -> 13.95

Bei Verwendung von „{:.15f}“.format(round(a, 2)) wird aufgrund der Genauigkeitsbeschränkungen von Gleitkommazahlen 13,949999999999999 zurückgegeben. Für Anzeigezwecke ist diese Präzision jedoch nicht erforderlich.

Das obige ist der detaillierte Inhalt vonWie kann ich Gleitkommazahlen zur Anzeige zuverlässig auf zwei Dezimalstellen runden?. 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