float Zahlen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
kostonstyle
User
Beiträge: 148
Registriert: Sonntag 2. November 2008, 12:13

hallo
warum lässt sich float Zahlen nicht genau darstellen? Wenn ich in der interaktiven Modus folgendes eingebe.
>>> 0.9
0.90000000000000002
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Das liegt in der Natur der Sache. Es gibt für 0.9 keine exakte Darstellung im Binärsystem, das Python (wie fast alle Programmiersprachen) benutzt. Siehe http://docs.python.org/tutorial/floatingpoint.html. Nimm 0.9375, dass lässt sich exakt repräsentieren.

Oder nimm Decimal, wenn's genau sein soll:

Code: Alles auswählen

import decimal
decimal.Decimal("0.9")
Oder Fraction:

Code: Alles auswählen

import fractions
fractions.Fraction(9, 10)
Dann beschwere dich, dass diese beiden Zahlenarten so umständlich anzugeben sind. Ich würde eigentlich erwarten, dass der Ausdruck 1/3 ein Fraction-Objekt liefert und nicht wieder ein int (oder ab Python 3.x ein float). Aber so ist da nun mal...

Stefan
Antworten