[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