Zurück   T-Board.ch > Computer, Technik & Games > Programmieren & Co.
Benutzername
Kennwort
Portal FAQ Benutzerliste Kalender Suchen Heutige Beiträge Alle Foren als gelesen markieren


Antwort
 
Themen-Optionen Thema durchsuchen Ansicht
Alt 23.01.2010, 14:15   #1
mix
Registriert
Lord of the Board
 
Benutzerbild von mix
 
Registrierungsdatum: Oct 2002
Ort: there
Beiträge: 1.891
Java: Datentypen konvertierung und ausgabe einer double-variable

Hi,

Bin mal wieder hier und hab gedacht könnte mal wieder was fragen, mal schauen ob noch wer hier ist

Habe jetzt dann eine Java prüfung und dazu eine kleine Frage:
In einer Beispiel prüfung ist gefragt was folgendes ausgibt:
Code:
// d hat den datentyp double
for (d = 1.0; d >= 0.4; d -= 0.3);

System.out.println(d);

Das gibt dann 0.39999999999999997 zurück. Wieso wird da nicht 0.4 zurückgegeben?
Die Schleife wird ja 2x ausgeführt: zuerst auf 0.7 und dann auf 0.4. Wenn ich in der Schleife das "d" ausgeben lasse wird mir explizit auch 0.7 ausgegeben und nicht 0.69999999999999997.
Wieso wird dann beim andern sysout dies so ausgegeben? Ist das weil das irgendwie versucht irgendeine grösstmögliche genauigkeit oder so hinzubringen?

Grüsse
Michael
mix ist offline   Mit Zitat antworten
Alt 25.01.2010, 13:46   #2
spross
Techn. Administrator
eidg. dipl. Sekretärin
Postinator
 
Benutzerbild von spross
 
Registrierungsdatum: Apr 2004
Ort: Ottikon b. K.
Beiträge: 520
Da der Computer "nur" Nullen und Einsen kennt, kann er keine ungeraden Zahlen abbilden. Also Fliesskommazahlen kann man nicht immer in Bits ausdrücken. Ausser in Wissenschaftlicher Form (z.B. 1.2345E-5). Man glaubt es kaum, ist aber so

Deshalb wird ein double (float mit doppelter Genauigkeit) immer in einer maximalen Fliesskommazahl abgebildet.

Entweder verwendest du BigDecimal, wo du genau definieren kannst, wie deine Fliesskommazahlen aussehen und sich verhalten sollen, oder du rundest dein Ergebnis.

Die Insel kennst du: http://openbook.galileodesign.de/ja...40000A91F032241
Oder Kollege Torsten: http://www.torsten-horn.de/techdocs...atierungRundung

Und falls es dich interessiert wie Fliesskommazahlen trotzdem irgendwie in Bits abgelegt werden, zieh dir den IEEE 754 floating point Standard rein: https://www.ibm.com/developerworks/...rary/j-jtp0114/
__________________
Best viewed with open eyes and a human brain!
I do know everything, just not all at once. It's a virtual memory problem.
In a world without borders and fences who needs windows and gates? think different
spross ist offline   Mit Zitat antworten
Alt 29.01.2010, 15:39   #3
mix
Registriert
Lord of the Board
 
Benutzerbild von mix
 
Registrierungsdatum: Oct 2002
Ort: there
Beiträge: 1.891
hey, danke für die info.

das mit dem IEE 754 standard kenne ich. Ich wusste nur nicht, dass es in diesem Fall auch zutrifft, ist aber ja eigentlich logisch

Grüsse
mix ist offline   Mit Zitat antworten
Antwort


Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten
Es ist Ihnen nicht erlaubt, Anhänge anzufügen
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten

vB Code ist An
Smileys sind An
[IMG] Code ist An
HTML Code ist Aus
Gehe zu



Alle Zeitangaben in GMT +2. Es ist jetzt 12:20 Uhr.


Powered by: vBulletin Version 3.0.1 T-Modifications (Deutsch)
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.
Design & Content: ©2000-2004 by the T-Board Team
Powered by ♔ koeniglich.ch