Seite 1 von 1

Fehler bei Umwandlung: 17stelliger INT in FLOAT

Verfasst: Freitag 9. Dezember 2011, 20:06
von Kegelkugel
Hallo,

Code: Alles auswählen

n=12345678901234567
print n
print int(float(n))

n=12345678901234566	# am Ende: 66 statt 67
print n
print int(float(n))

n=1234567890123457	# am Ende: 57 statt 567
print n
print int(float(n))
Dieser Code macht eigentlich nichts besonderes. Trotzdem wird bei mir folgende Ausgabe erzeugt:
12345678901234567
12345678901234568
12345678901234566
12345678901234566
1234567890123457
1234567890123457
Wieso wird bei der Umwandlung von einem 17stelligen Integer in eine float-Zahl (und anschließender Ausgebung wieder als Integer) die letzte Stelle um eins erhöht? Und zwar nur, wenn die letzte Stelle ungerade ist.
Kann mir das jemand erklären?
Danke!

Grüße,
Markus

Re: Fehler bei Umwandlung: 17stelliger INT in FLOAT

Verfasst: Freitag 9. Dezember 2011, 20:42
von noisefloor
Hallo,

das ist IMHO die Ungenauigkeit bei der Darstellung von float-Zahlen. Dabei kommt nämlich auch der Fehler. Sieht du, wenn du dir "float(n)" ausgeben lässt. Die Rückwandlung nach int stimmt.

Wenn du sehr präzise Rechnen musst, dann bietet sich das Decimal-Modul an.

Gruß, noisefloor

Re: Fehler bei Umwandlung: 17stelliger INT in FLOAT

Verfasst: Samstag 10. Dezember 2011, 12:58
von Kegelkugel
Danke! :)