Warum kommt bei dieser Zuweisung 0.09999999999999998 raus?????
d = 1.0;
d -= .9
( mit d += .9 kommt 1.9 raus also richtig... mit d-= .8 kommt o.2 auch richtig..??)
wenns jemand weiß wär geil!!!
ohne es getestet zu haben, probiers mal mit:
d = 1.0d;
d -= .9d;
Wie hast du denn d deklariert? Als double oder float?
Dies sind Rundungsfehler, die beim Datentyp float und double auftreten. Dies liegt meines Wissens daran, wie Java float, sowie double Werte speichert. Diese werden nämlich meines Wissens in einer Exponentenschreibweise gespeichert. Da ein double oder float eine festgelegte Bitlänge hat, ist die Speicherung von Zahlen auch gar nicht ohne Informationsverlust möglich, da es unendlich viele Zahlen gibt, jedoch in 32 bzw. 64 Bit nur eine endliche Anzahl gespeichert werden kann. (genaueres: http://openbook.galileodesign.de/javainsel7/javainsel_05_002.htm#mjd9d43513f78c21f922f58b5a6d2ab136 )
Wenn du es genau haben willst, kannst du z.B. die Klasse BigDecimal verwenden. ( http://openbook.galileodesign.de/javainsel7/javainsel_05_007.htm#mjca9cd17ca897f97ad1c28464469cee30 )
Und wegen dieser Rundungsfehler, ist es auch ratsam Floats/Doubles niemals auf Gleichheit zu testen.
Und wenn möglich auch eher mit Integer zu arbeiten wenn dies möglich ist.
.. ja habs als double deklariert... es ging nur darum es auszutesten und das Ergebnis zu erklären... uni halt..