C++ double = int / int ;

ActiveO2

Ensign
Registriert
Feb. 2009
Beiträge
161
Hallo,

ich habe einen unsigned-int-Wert (unWert) und einen int Wert (nWert).
Ich dividiere nun: unWert / nWert und möchte einen Double (dWert) erhalten:
dWert = (double)(unWert / nWert);
Wieso funktioniert das nicht?


Bei folgenden Werten zB bekomme ich immer eine '1';

dWert = 238 / 168 // == 1
dWert = (double)(238 / 168); // == 1
dWert = (double)(238 * 1.00) / 168 * 1.00) // == 1
...

.
 
Zuletzt bearbeitet:
Auch in C++
um wirklich sicher zu gehen die obere
 
genau, sonst wird gerundet...

es wird ja im Ablauf des Programms erst gerechnet, folglich gerundet und dann erst gecastet, in all deinen Beispielen...
 
Mindestens ein Operand einer Division muss ein Fließkommawert sein um eine Fließkommadivision durchzuführen - entweder durch einen expliziten Cast via (double) oder der Fließkommaerzwingung via f-Suffix (z.B. 2.0f).

Wenn beide Werte ordinal sind, wird natürlich eine Integer-Division durchgeführt. Dann das Ergebnis nach double zu casten ändert an dem Wert dann auch nichts mehr - da ist das double-Kind dann schon in den Brunnen gefallen (ho ho ho)
 
Danke zusammen ^^,
so was einfaches und ich bin einfach nicht draufgekommen.
Lag bestimmt am Zeitdruck *:affe:
 
Zurück
Oben