Zum Forum springen
Benachrichtigungen
Alles löschen

[Geschlossen] java zuweisung??

6 Beiträge
5 Benutzer
0 Reactions
575 Ansichten
Spitzbuben
Beigetreten: 10.04.2007

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!!!


5 Antworten
carlptr
Beigetreten: 07.08.2006

ohne es getestet zu haben, probiers mal mit:

d = 1.0d;
d -= .9d;

Wie hast du denn d deklariert? Als double oder float?


Es lassen sich nur wenige reelle Zahlen im PC exakt darstellen.


klausschreiber
Beigetreten: 31.07.2006

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 )


Deradon
Beigetreten: 03.09.2007

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.


Spitzbuben
Beigetreten: 10.04.2007

.. ja habs als double deklariert... es ging nur darum es auszutesten und das Ergebnis zu erklären... uni halt..


Teilen: