Seite 1 von 1

Manchmal falsches Ergebnis bei Konvertierung Float -> Int

Verfasst: Samstag 26. Juli 2008, 18:44
von Horrifior
Hi allerseits,

folgender Pythoncode fuehrt bei mir zu unerwarteten Ergebnissen:

Code: Alles auswählen

string='0.580'
print float(string)
print 100.000*float(string)
print int(100.000*float(string))
Ausgabe:

0.58
58.0
57

Vielleicht kann mir einer von euch erklaeren, was da fuer 0.58 und auch 0.29 falsch laeuft? Fuer viele andere Zahlen klappt die Konversion im letzten Schritt problemlos ...

Das Problem tritt sowohl auf einem UNIX-Cluster auf als auch auf einem Windows-Rechner auf, beide Male python 2.5. Ist das ein bekanntes Problem/Bug, oder mache ich irgendwas komplett falsch?

Vielen Dank fuer Eure Hilfe!

Verfasst: Samstag 26. Juli 2008, 18:48
von BlackVivi
Genauigkeitsprobleme beim rechnen mit Fließkommazahlen sind wohl ein bekanntes Problem bei Python. Benutz die Bibliothek decimal um die Ergebnisse genau zu halten.

Verfasst: Samstag 26. Juli 2008, 18:57
von Rebecca
BlackVivi: Das hat rein gar nichts mit Python zu tun, sondern ist ein allgemeines Problem bei der Darstellung von Zahlen als Fliesskommazahlen:http://de.wikipedia.org/wiki/Gleitkommazahl

Das Problem ist, dass sich 0.58 nicht exakt als Fliesskomazahl darstellen laesst:

Code: Alles auswählen

>>> print repr(0.58)
0.57999999999999996
Da int(...) die Nachkommastellen einfach abrundet, kommt halt 57 raus. Mit round waere das nicht passiert...

Verfasst: Samstag 26. Juli 2008, 18:58
von Horrifior
Okay, danke euch beiden!