Kurze Frage zu fmod()
-
Hi!
Ich verwende fmod() um den Rest von Fließkommazahlen zu berechnen. Wenn ich jetzt fmod(5,0.2) schreibe, kommt da jedoch 0.2 statt 0 heraus, was jedoch nicht stimmen kann.
Kann mir da eventuell jemand weiterhelfen?
mfg enne
-
Nicht alle Dezimalzahlen, lassen sich als Fliesskommazahlen korrekt darstellen.
Lies mal den Artikel:
http://www.mpdvc.de/artikel/FloatingPoint.htm
-
Alles klar, danke Martin

-
Gibt es eventuell eine Alternative zu fmod()?
-
Steht doch in dem Artikel:
float x = 5.f;
float y = 0.2f;float mod = ( (int)(x * 10) % (int)(y * 10) ) * 0.01f;
-
Only-Olli schrieb:
Steht doch in dem Artikel:
float x = 5.f;
float y = 0.2f;float mod = ( (int)(x * 10) % (int)(y * 10) ) * 0.01f;
Ah ok, danke , ich denke, es muss aber
float mod = ( (int)(x * 10) % (int)(y * 10) ) * 0.1f;
heißen oder?
EDIT: Nein, das kann beides nicht stimmen, setz mal für x 1.15 und für y 0.2 ein, dabei sollte eigentlich 0.15 rauskommen, es kommt aber ein ganz anderes Ergebnis heraus.
-
Ja,
float mod = ( (int)(x * 10) % (int)(y * 10) ) * 0.1f; muss es heißen, sry...1.15 benutzt zwei komma-stellen, dann müsste man die 10 gegen 100 austauschen, dann müsste es wieder gehen...

ansonnsten kA...
-
Und natürlich mit 0.01f malnehmen... weil dann halt:
(115 % 20) / 100