Beibehaltung von zwei Dezimalstellen in Gleitkommazahlen
Beim Arbeiten mit Gleitkommazahlen ist es oft wünschenswert, diese auf einen bestimmten Wert zu beschränken Anzahl der Dezimalstellen. Allerdings kann die einfache Verwendung der Funktion „round()“ zu unerwarteten Ergebnissen führen, wie das folgende Verhalten zeigt:
>>> a 13.949999999999999 >>> round(a, 2) 13.949999999999999
Dies geschieht, weil Gleitkommazahlen Einschränkungen bei der genauen Darstellung aller Zahlen haben. Die im Speicher gespeicherten Werte stimmen nicht immer mit den angezeigten überein.
Gleitkomma-Präzision verstehen
Gleitkommazahlen mit doppelter Genauigkeit, die in Python verwendet werden, haben ungefähre Werte 16 Ziffern Genauigkeit. Das bedeutet, dass Zahlen wie 13,95 auf ähnliche Weise dargestellt werden wie:
125650429603636838/(2**53)
Bei Anwendung der Funktion „round()“ ist das Ergebnis immer noch derselbe Gleitkommawert, der intern mit denselben Einschränkungen dargestellt wird.
>>> 125650429603636838/(2**53) 13.949999999999999
Alternative Methoden zur Begrenzung von Dezimalstellen
Wenn nur zwei angezeigt werden Dezimalstellen sind unerlässlich, ziehen Sie diese Alternativen in Betracht:
Beispiele:
>>> a = 13.946 >>> print("%.2f" % a) 13.95 >>> print("{:.2f}".format(a)) 13.95 # Using decimal module >>> import decimal >>> a = decimal.Decimal('13.946') >>> a.quantize(decimal.Decimal('.01')) Decimal('13.95')
Das obige ist der detaillierte Inhalt vonWie kann ich in Python zwei Dezimalstellen in Gleitkommazahlen zuverlässig beibehalten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!