[Python-de] Wer nicht fragt, bleibt dumm

Detlef Lannert lannert at uni-duesseldorf.de
Mon Nov 24 17:39:53 CET 2003


Axel Bringenberg <A.Bringenberg at srz-berlin.de> wrote:
> Wieso ist bei Python 1.5.2 ...
> 
> >>> 4.0 - 0.1
> 3.9
> 
> aber bei 2.1.3 und später ...
> 
> >>> 4.0 - 0.1
> 3.8999999999999999

Es kommt bei der Subtraktion nicht wirklich was anderes heraus ;-) .
Früher wurden Floats bei der Ausgabe standardmäßig gerundet, jetzt
werden sie mit allen signifikanten Ziffern ausgegeben, damit man
sieht, daß z.B. (2.0 ** 0.5) ** 2 nicht etwa 2 ist, sondern
2.0000000000000004 (oder was die Hardware so hergibt).

Wer's nicht so genau wissen will, soll halt
round((2.0 ** 0.5) ** 2, 6) schreiben; damit wird deutlich, daß
keine "exakten" Werte verwendet werden. Es ist IMO ein Versuch,
die Anwender mit der Nase auf die bekannten Floating-Point-Probleme
zu stoßen. Ob er erfolgreich ist, weiß ich nicht ...

  Detlef