Bereiche
News
Rewind
Tipps & Berichte
Forum
Galerie
Journals
Events
Umfragen
Themenwoche
Kleinanzeigen
Interaktiv
Anmelden
Registrierung
Zu allen empfangenen Nachrichten
Suche...
Zur erweiterten Suche
Push-Nachrichten von MacTechNews.de
Würden Sie gerne aktuelle Nachrichten aus der Apple-Welt direkt über Push-Nachrichten erhalten?
Forum
>
Entwickler
>
Java double Multiplikation
Java double Multiplikation
rofl
18.06.05
15:47
Gerade verlässt mich mein Glaube an Java:
Ich mache nix anderes als:
System.out.println(100.0*1.1);
und erhalte als Ergebnis:
110.00000000000001
Getestet sowohl unter 1.5 als auch 1.4.2.
Natürlich könnte man sage, es liegt an der Darstellung der 0.1 im Speicher, aber das müsste doch Java bereinigen können. Kann jemand das Problem reproduzieren?
Danke
-rofl
Hilfreich?
0
Kommentare
rofl
18.06.05
15:52
Also PHP, Purebasic, cpp, und der Taschenrechner (TI und OSX) machen es richtig...
Hilfreich?
0
rofl
18.06.05
16:09
So es ist doch das schöne alte floating point Problem:
Man sollte doch meinen was andere Sprachen schaffen hätte Java auch im Griff, klar es ist nur eine Abweichung von 10^-15 aber sehr unschön, und unnötig.
Naja muss man die Ausgabe halt formatieren und so tun als ob alles okay ist...
Hilfreich?
0
Donar-
18.06.05
16:11
Gugg mal, ob die anzahl der dargestellten Dezimalstellen in den anderen Programmen etc. genau so groß ist...
Fließkommazahlen haben je nach System zwischen 10 und 15 signifikante Stellen (Bin zu faul die IEEE Norm nachzuguggen). Deine Beispielausgabe hat 14 Dezimalstellen und zusätzlich noch die 3 vor dem Dezimalpunkt. Ergo bist du arg an der Grenze.
Der Hauptgrund ist aber, dass 1.1 keine Zahl ist, die sich binär exakt als Bruch darstellen lässt (obwohl das als Dezimalbruch 1a geht! 1/3 schaut als Dezimalzahl auch blöd aus...). Genaueres unter:
Wenn du es wirklich genau brauchst (wissenschaftliche Arbeiten) gibt es High Precision Klassen, die aber stinken langsam sind...
Hilfreich?
0
rofl
18.06.05
16:12
Das ist mir alles bewusst, sehr bewusst sogar, aber an 100*1.1 zu scheitern ist schon traurig - oder?
Schließlich ist man ja heutzutage dank gcc und php verwöhnt.
Hilfreich?
0
DarkVamp
26.06.05
16:23
Hi,
lasse ihn mal mit new Double(100.00) und new Double(1.100) rechnen.
Hilfreich?
0
rofl
26.06.05
16:26
Ja klar Double wird warscheinlich gehen, aber ich arbeite meist doch mit primitiven.
Hilfreich?
0
DarkVamp
26.06.05
21:47
Hi,
die Genauigkeit ist hier das Problem...
Evtl. reicht es auch 100.0000 und 1.1000 zu nehmen die Nachkommastellen alle mit angeben...
Hilfreich?
0
Kommentieren
Diese Diskussion ist bereits mehr als 3 Monate alt und kann daher nicht mehr kommentiert werden.
Mac OS X: 25 Jahre Aqua, 25 Jahre Dock
Gurman zum Release des neuen Apple TV, HomePods...
Weitere Berichte zur neuen Kamera des iPhone 17...
Hohe Softwareanforderungen: Neues USB-C-Zubehör...
Vor 18 Jahren: iPhone, Apple TV und "Apple Inc."
Erscheint das neue MacBook Air M4 früher als an...
2 TByte für 259 US-Dollar: Erste Upgrade-SSDs f...
Tim Cooks Jahresgehalt – und die Vergütung der ...