OT : Java

Sascha Effert fermat at uni-paderborn.de
Tue Apr 23 17:23:24 CEST 2002


On Tue, 23 Apr 2002 jan.krueger at in.tum.de wrote:

> Das ganze sollte eigentlich so etwas wie
> 0.0 0.1 ... 0.9 erzeugen. Und zwar zweimal.
> In der Realität sieht das ganze schon anders aus, da bekomme
> ich :
>
> 0.0 0.1 0.2 0.30000000000000004 0.4 0.5 0.6
> 0.7 0.799999999999999 0.8999999999999999
> 0.9999999999999999
> 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.70000005
> 0.8000001 0.9000001
>
> Kann sich das von Euch einer erklären ?

Hmmm.... Ja, irgenwie schon:

Ich denke, das dies einfach damit zusammenhängt, wie so ein Rechner
floatin-Points verwaltet. Er muss dieses 0,1 ja irgendwie in ein Potenz
zur Zahl 2 bringen, also die Mantisse der Floatingpoint Zahl errechnen.
Wenn Du nun versuchst 0,1 in einer Basis zu 2 darzustellen, dann wirst Du
sehen, dass dies ein zimliches Problem ist, da das dann auf einmal eine
Zahl mit verdammt vielen Nachkommastellen wird, viel mehr als eine double
oder gar float-Variable fassen kann. Also ergibt sich nun ein
Rundungsfehler, welcher sich durch das mehrmalige addieren immer weiter
verstärkt.

Dies ist kein Java-Problem, sondern ein generelles Problem von
floatingpoint Zahlen. Das gleiche sollte auch in anderen
Programmiersprachen passieren.

tschau


Sascha Effert
Fermat at gmx.at
Tel.:(0177) 6266652

-- 
Das schöne an Windows ist, dass ihr damit arbeiten müsst!





More information about the Linux mailing list