(ANSI C) warum funktioniert die billigrechnung nicht?
-
Hallo!
Warum spuckt mir C folgendes aus:long double ldResult;
ldResult = 12/11;
printf("%E", ldResult);
Ergebnis:
1,0000000000E+0000
Warum spuckt er nicht 1,0909090...... aus?
ICh brauche das, da ich in meinem Programm alles um eine 10erstelle verschieben will und das geht doch nur mit x / 10, oder?
Kevin
-
Weil 12/11 eine Ganzzahldivision ist, und dabei kommt nun mal 1 raus.
Versuch es mal so: ldResult = 12.0/11;
-
hmm und wenn in ner variable von long double z.b. 12 steht und ich wills durch 10 teilen wie bekomm ich das hin dasses 1,2 ist?
Kevin
-
int a = 5; int b = 2; double x = (double)a/(double)b;
Wäre übrigens um ANSI-C Forum besser aufgehoben...
-
Original erstellt von Surkevin:
hmm und wenn in ner variable von long double z.b. 12 steht und ich wills durch 10 teilen wie bekomm ich das hin dasses 1,2 ist?
KevinDas geht von allein. Nur wenn Dividend und Divisor beide Ganzzahldatentypen sind, wird eine Ganzzahldivision gemacht. Der Typ ist entscheidend, nicht der Wert.
-
Ist aber reinstes ANSI-C, und wird jetzt auch ins ANSI-C-Forum verschoben ;).
MfG SideWinder