warum speichert double 9/5 nicht korrekt ab?
-
wenn ich zB:
double d=9/5;
eingebe, wird d = 1 gesetzt. Müsste double aber nicht ins Komma gehn? Denn wenn ich
double d=9;
d=d/5;
eingebe, wird es korrekt berechnet
-
9 und 5 sind int => das Ergebinis ist auch int Probiere
double d=9./5;
-
Wobei noch anzumerken ist dass 9/5 sowieso nicht exakt in einem
double
abgespeichert werden kann, weil die binäre Darstellung von 9/5 unendlich periodische Nachkommastellen hat.
-
/`@mathelatte sagte in warum speichert double 9/5 nicht korrekt ab?:
double d=9/5;
eingebe, wird d = 1 gesetzt.Ja, weil die rechte Seite vom = erst ausgeführt wird. Der Ausdruck
9/5
weiß nicht, dass er danach an einen double zugewiesen werden soll. Es wird also 9 / 5 = 1 gerechnet. Erst danach wird das Ergebnis, also 1, dem double zugewiesen, wobei die 1 dann ein ein double (also 1.0) konvertiert wird.Denn wenn ich
double d=9;
d=d/5;
eingebe, wird es korrekt berechnetJa, weil hier d nach der ersten Zeile den double-Wert 9 (also 9.0) enthält. In der 2. Zeile teilst du double/int. Wenn Zähler oder Nenner double ist, wird die Rechnung in double durchgeführt.
-
Kannst dir da ja mal ansehen: https://www.binaryconvert.com/convert_double.html
https://www.h-schmidt.net/FloatConverter/IEEE754.html