[Python-de] RE: Variablenübergabe
"Martin v. Löwis"
martin at v.loewis.de
Mon Mai 31 19:33:28 CEST 2004
Frank Hildesheim wrote:
> Ich habe Python zwei float(Werte) dividieren lassen -> float(wert1 /
> wert2) und das Ergebnis mit Kcalc (Kde3.2) verglichen, Python zeigt nur
> etwa 6 Kommastellen an, ich brauche aber das Ergebnis so genau wie
> möglich!
Sowohl Python als auch Kcalc verwenden beide die gleiche interne
Darstellung von Gleitkommazahlen, nämlich die
64-bit-IEEE-754-Darstellung. Diese hat eine feste Genauigkeit von
53 bits Nachkommastellen. Wieviele davon im Dezimalsystem verwendbar
sind, hängt natürlich auch von der Zahl der Vorkommastellen ab.
Du kannst mit dem %-Operator eine Formatierung sehr vielen
Nachkommastellen fordern. Allerdings ändert die Formatierung nichts
daran, dass die Genauigkeit der internen Repräsentation auf 53 bits
beschränkt ist:
>>> "%.30f" % (1.0/3)
'0.333333333333333314829616256247'
> Gibt es eine Möglichkeit Python noch genauer rechnen zu lassen
> (Byte-Größen von Dateien, es muß sehr genau sein).
Wenn Du es genau haben willst, darfst Du keine Gleitkommazahlen
verwenden. Für die Größe von Dateien bieten sich ganze Zahlen
(integer) an: man hat sowieso nie halbe Bytes, immer nur ganze.
Ciao,
Martin