OT : Java
Joern Muehlencord
joern at muehlencord.de
Tue Apr 23 17:23:03 CEST 2002
Hallo Jan,
> 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
> ?!?!? Hä, wie kann das denn sein? Habe ich hier nen Bug in Java
> oder bei mir gefunden ?
> Liegt jedenfalls nicht am Betriebssystem(Linux, Solaris oder
> Win) oder der Java-Version(1.1.8, 1.2.2, 1.3.1, 1.4.0 alle von
> SUN).
Das ist fuer Fliesskomma-Zahlen (unter Java) eigentlich normal. Wenn das
in der weitere Berechnug von wichtiger Bedeutung ist, dann musst du mit
Math.round den Nachkommal teil auf nen int-bringen. Dann passiert dir
das nicht mehr.
Das tritt z.B. dann auf, wenn du Math.ceil auf eine Double-Zahl
loslaesst; beispielsweise erwartest du ja bei Math.ceil (3.7) eine 4 -
man bekommt aber evtl eine 3.9999999 - wenn man die dann auf (int)
-castet, dann hast du einen falschen Wert. (3 anstatt 4) Deswegen sieht
der richtige Ausdruck fuer diesen Teil so aus:
double a = ....
int b = Math.round(Math.ceil(a));
Mfg
Joern
--
The box said "Requires Win95, NT, or better," and so I installed Linux.
More information about the Linux
mailing list