Frage von Kirra1, 26

Ausgabe einer Anweisung in C Sprache?

Hallo hab folgende Anweisung float value = 13/5 + 0.4; printf("%.1f\n", value);

ich habe 2.4 gekriegt , weiss nicht aber warum ? soll ich nicht 3 kriegen ?!

Antwort
von HellasPlanitia, 19
13/5

Das ist eine Integerdivision, was bedeutet, dass das Ergebnis als ganze Zahl interpretiert wird und alle Nachkommastellen abgeschnitten werden. 13/5 ergibt also hier 2. Dies kommt daher, weil beide Zahlen, sowohl Dividend als auch Divisor, Integer sind. Wandle mindestens eine der beiden in eine Fliesskommazahl um, dann sollte es gehen.

Antwort
von DoTheBounce, 17

13/5 wird als Integerdivision ausgeführt, weil beide Werte nur integer sind. Das Ergebnis dieser Operation ist damit 2. Dann addierst du noch 0.4 drauf (0.4 ist eine Gleitkommazahl, d.h. wird erst an dieser Stelle auch der Int gecastet)

Antwort
von Mikkey, 7

Damit Du auch weißt, wie das geht:

float value = 13.0/5 + 0.4; // alternativ float value = ((float)13)/5 + 0.4;

printf("%.1f\n", value);

Antwort
von Omnivore08, 4

13/5 ist 2, da es als Integer interetiert werden. Entweder castest du die 13 in ein Float oder du machst da eine 13.0 draus

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten