Begrenzung von Gleitkommazahlen auf zwei Dezimalstellen: Gleitkomma-Ungenauigkeit und alternative Lösungen
Diskrepanzen zwischen erwarteten und angezeigten Gleitkommawerten sind eine häufiges Problem, mit dem Entwickler konfrontiert sind. In Python zielt der bereitgestellte Code darauf ab, den Wert von „a“ auf 13,95 zu runden, führt jedoch aufgrund der Einschränkungen der Gleitkommadarstellung zu einem etwas anderen Ergebnis.
Gleitkommazahlen werden zur Darstellung reeller Zahlen in verwendet ein binäres Computersystem. Allerdings können nicht alle Zahlen mit voller Genauigkeit dargestellt werden, was zu Rundungsfehlern führt. Im Fall von „a“ ist der gerundete Wert derselbe wie der ursprüngliche Wert, da der Computer ihn als binären Bruch speichert, der 13,95 nicht genau darstellen kann.
Pythons Gleitkommatyp mit doppelter Genauigkeit verwendet 53 Bits von Präzision, während normale Floats 24 Bit haben. Dies bedeutet, dass die Genauigkeit von Gleitkommazahlen auf 16 Dezimalstellen für doppelte Genauigkeit und 8 Dezimalstellen für reguläre Gleitkommazahlen begrenzt ist.
Um dieses Problem zu lösen, können mehrere Ansätze in Betracht gezogen werden:
Anzeigeformatierung
Um „a“ mit nur zwei Dezimalstellen anzuzeigen, verwenden Sie Zeichenfolgenformatierungstechniken wie z als:
print("%.2f" % a) # Output: 13.95 print("{:.2f}".format(a)) # Output: 13.95
Dezimaltyp
Wenn genaue Präzision erforderlich ist, sollten Sie die Verwendung des Dezimaltyps aus dem Dezimalmodul in Betracht ziehen:
import decimal decimal.Decimal('13.95') # Output: Decimal('13.95')
Ganzzahldarstellung
Für Währungswerte, bei denen eine Genauigkeit von nur bis zu zwei erforderlich ist Dezimalstellen, verwenden Sie ganze Zahlen, um Werte in Cent zu speichern, und teilen Sie sie durch 100, um sie in Dollar umzurechnen:
value_in_cents = 1395 # Store value as an integer value_in_dollars = value_in_cents / 100 # Output: 13.95
Das obige ist der detaillierte Inhalt vonWie kann ich Gleitkommazahlen in Python genau auf zwei Dezimalstellen beschränken?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!