-         

Ergebnis 1 bis 6 von 6

Thema: Problem mit fmod()

  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.07.2004
    Beiträge
    270

    Problem mit fmod()

    Anzeige

    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

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    21.10.2005
    Ort
    Erde
    Alter
    50
    Beiträge
    1.195
    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.

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.07.2004
    Beiträge
    270
    Hallo,
    vielen Dank, das wars! Was genau ist "casten" ?

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    21.10.2005
    Ort
    Erde
    Alter
    50
    Beiträge
    1.195
    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.

  5. #5
    Erfahrener Benutzer Roboter Genie Avatar von robocat
    Registriert seit
    18.07.2006
    Beiträge
    935
    int i=47%10; -> i=7

    müsst doch für ganzzahlen besser geeignet sein oder?

    gruesse

  6. #6
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    21.10.2005
    Ort
    Erde
    Alter
    50
    Beiträge
    1.195
    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);

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •