[Python-de] Rechenfehler int()

René Liebscher R.Liebscher at gmx.de
Thu Mar 13 11:04:31 EST 2003


Ron Opitz wrote:
> 
> Hallo,
> 
> anbei eine verrückte Sache, ich hoffe jemand kann mir erzählen woran das
> liegt, und wie man das umgehen kann.
> 
> Das Beispiel ist eigentlich selbsterklärend. Die Funktion int() soll eine
> fload Zahl in eine int Zahl ändern. Das geht auch, bis auf folgendes
>  Beispiel.

Die Zahl 65.35 ist leider nicht ganz das was sie aussieht:

>>> print "%.20f" % 65.35
65.34999999999999431566

Damit wird beim Abrunden von 65.35*100 natürlich 6534 daraus.
Das liegt an der Benutzung des Binärsystems für Brüche und da passen un
mal nicht alle Dezimalbrüche perfekt hinein.
Für genauere Rechnungen heisst das also Dezimalbrüche zu vermeiden. Also
hier zum Beispiel gleich alle Zahlen mit 100 multipliziert zu rechnen.
(Zum Beispiel in Cent statt Euro.)

MfG
Rene Liebscher

> 
> Danke im Voraus + Gruß
> 
> Ron
> 
> C:\>python
> Python 2.2.1 (#34, Apr  9 2002, 19:34:33) [MSC 32 bit (Intel)] on win32
> Type "help", "copyright", "credits" or "license" for more information.
> 
> >>> betrag = 65.35
> >>> print betrag
> 
> 65.35
> 
> >>> betrag = int(betrag*100)
> >>> print betrag
> 
> 6534
> 
...




More information about the Python-de mailing list