-
Problem mit fmod()
Hallo,
ich versuche gerade, fmod() zu verwenden, um den Rest einer Division zu erhalten, aber es klappt teilweise nicht.
Mit fmod(47,10) müsste ich als Ergebnis 7 erhalten, bekomme aber 6!
fmod(32,10) liefert dagegen das korrekte Ergebnis 2.
Habt ihr ne Idee, wo der Fehler ist?
Gruß
Spurius
-
float fmod ( float x, float y )
Du musst das Ergebnis auch als float überprüfen. Zur Umwandlung in einen int musst Du vorher 0.5 hinzuaddieren, da beim casten immer abgerundet wird.
-
Hallo,
vielen Dank, das wars! Was genau ist "casten" ?
-
Typumwandlung, z.B.
Code:
int i = 0;
i = fmod(42, 4);
Hier finden mehrere implizite Typumwandlungen statt:
42 und 4 werden von int nach float gewandelt, und das Ergebnis von fmod wird von float nach int gewandelt, wobei die Nachkommastellen weggeworgen werden.
-
int i=47%10; -> i=7
müsst doch für ganzzahlen besser geeignet sein oder?
gruesse
-
Das ist richtig. Laut Topic will er's aber für Fließkommazahlen wissen. Also z.B.
Code:
float remainder = fmod(42.3, 7.6);