Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich Gleitkommazahlen in Python genau auf zwei Dezimalstellen runden?

Wie kann ich Gleitkommazahlen in Python genau auf zwei Dezimalstellen runden?

Linda Hamilton
Linda HamiltonOriginal
2024-12-20 05:00:19127Durchsuche

How Can I Accurately Round Floating-Point Numbers to Two Decimal Places in Python?

Beschränkung von Gleitkommazahlen auf zwei Dezimalstellen

Beim Arbeiten mit Gleitkommazahlen ist es wichtig, die Einschränkungen dieses Datentyps zu berücksichtigen. Insbesondere können Gleitkommazahlen bestimmte Werte möglicherweise nicht genau darstellen, was beim Rundungsversuch zu unerwarteten Ergebnissen führt.

Problem: Wenn Sie versuchen, eine Gleitkommazahl auf zwei Dezimalstellen zu runden, kann dies zu unerwarteten Ergebnissen führen stoßen auf das folgende Problem:

>>> a
13.949999999999999
>>> round(a, 2)
13.949999999999999

Das Problem entsteht, weil Gleitkommazahlen Werte als ganze Zahlen dividiert durch eine Zweierpotenz speichern. Diese Darstellung erfasst möglicherweise nicht alle Werte genau. Im Fall von Zahlen mit doppelter Genauigkeit (die vom Gleitkommatyp von Python verwendet werden) haben sie eine Genauigkeit von 53 Bits (16 Ziffern), während reguläre Gleitkommazahlen 24 Bits (8 Ziffern) haben.

Lösung:

Um beim Runden einer Gleitkommazahl nur zwei Dezimalstellen anzuzeigen, gibt es mehrere Optionen verfügbar:

  • Ganzzahlen verwenden und Werte in Cent speichern:Anstatt Dollar zu speichern, speichern Sie Werte in Cent und teilen Sie sie durch 100, um sie in Dollar umzurechnen.
  • Verwenden Sie eine Festkomma-Zahlenbibliothek wie Dezimalzahlen: Festkommazahlen bieten eine genauere Kontrolle über die Anzahl der Dezimalstellen Orte.

Beispiele:

>>> a = 13.946
>>> print("%.2f" % a)
13.95
>>> print("{:.2f}".format(a))
13.95

Beachten Sie, dass die direkte Verwendung von „round(a, 2)“ immer noch zu Problemen mit der Gleitkommagenauigkeit führt, jedoch mit der Formatierung Der Wert als String mit %.2f oder {:.2f} ergibt die gewünschte Darstellung mit zwei Dezimalstellen.

Das obige ist der detaillierte Inhalt vonWie kann ich Gleitkommazahlen in Python genau 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