Java Java und rechnen?

DerZock

Lieutenant
Registriert
Mai 2009
Beiträge
908
Ich verstehe es nicht. Warum kommen zwei unterschiedliche Ergebnisse raus? :confused_alt:
Code:
double laenge = 10.85;
double gradLaenge = 10.0;
double nachkommastelleLaenge = (laenge-gradLaenge) * 60;
System.out.println(nachkommastelleLaenge); // ergibt 50.99999999999998
System.out.println(0.85 * 60); // ergibt 51.0

wie bekomme ich es hin das 51.0 beim ersten System.out rauskommen? Ich möchte nicht runden!
Es sollen nur alle Stellen nach dem Komma angezeigt werden, wenn auch welche vorhanden sind.
Also wenn laenge = 10.12345 und gradLaenge = 10.0 sollen am Ende 7.407 angezeigt werden.
 
bringt leider nichts..
 
funktioniert leider auch nicht..
 
Habs mal so gemacht. Scheinbar klappt das Subtrahieren schon nicht richtig.
Code:
double laenge = 10.85;
double gradLaenge = 10.0;
double erg = laenge-gradLaenge; //ergibt 0.8499999999999996
double nachkommastelleLaenge = erg * 60.0;
System.out.println(nachkommastelleLaenge);
 
ok, danke. Werde es mal versuchen ;)
 
Ganz einfach, 0.85(also auch 10.85) ist binäre nicht eindeutig darstellbar, sprich es wird nur ein Nährungswert abgespeichert, also irgendwas mit 0.84999999999 der gegen 0.85 konvergiert.
Also besteht deine einzigste Chance darin zu runden ;)

ps: Dieses Problem hat nicht nur java, sondern jede Programmiersprache bei Flieskommazahlen.

mfG
 
Zurück
Oben