wert von double Variable - Grundlage

TRBN

Cadet 2nd Year
Registriert
Nov. 2015
Beiträge
22
Hallo, kann mir einer erklären, warum bei folgendem 1.0 raus kommt?
double erg = 3/2;

ich dividiere doch 2 Kommazahlen, also müsste nach meinem Verständnis 1,5 rauskommen.

Wo liegt mein Denkfehler?
 
Hi,

dein Denkfehler dürfte sein, dass "3/2" eine Integerdivision ist, bei der eine Ganze Zahl herauskommt, die je nach Wert abgerundet dargestellt wird. Anschließend wird das Integer-Ergebnis auf Double gecastet bei der Zuweisung. Daher "1.0".

ich dividiere doch 2 Kommazahlen

eben nicht. Ich sehe da zwei Ganzzahlen Integer auf der rechten Seite. Lösung dürfte sein, die Division schon als Double-Division auszuführen oder die einzelnen Werte schon als Double zu casten.

VG,
Mad
 
Ich kenne das von C, dass bei ganzzahligen Werten (2; 3; 10;...) dividiert durch einen anderen ganzzahligen Wert auch wieder eine ganze Zahl rauskommt. Bei C geht es, wenn eine der beiden Zahlen ein "double" Wert ist, damit das Ergebis eine Kommazahl ergibt.

Also z.B. Erg = (double)3/2

Sorry, falls das die verwendete Programmiersprache anders funktioniert, habe aber nur Kenntnisse bei C.
 
Zuletzt bearbeitet:
Madman1209 hat den Grund erklärt. Kommazahlen daher am besten auch grundsätzlich als Kommazahlen schreiben:
Code:
double erg = 3.0 / 2.0;
bzw. für float:
Code:
float erg = 3.0f / 2.0f;

Dann spart man sich die hässlichen Typecasts.
 
Zurück
Oben