Name

fmod

Synopsis

Performs the modulo operation

#include <math.h>
doublefmod( double x, double y );
float fmodf( float x, float y );     (C99)
long double fmodl( long double x, long double y );     (C99)

The fmod() function returns the remainder of the floating-point division of x by y, called "x modulo y.” The remainder is equal to x minus the product of y and the largest integer quotient whose absolute value is not greater than that of y. This quotient is negative (or 0) if x and y have opposite signs, and the return value has the same sign as x. If the argument y is zero, fmod() may incur a domain error, or return 0.

Example

double people = -2.25, apples = 3.3, eachgets = 0.0, someleft = 0.0;
int saverounding = fegetround();       // Save previous setting

fesetround(FE_TOWARDZERO);

eachgets = rint( apples / people );
someleft =fmod( apples, people );

printf( "If there are %+.2f of us and %+.2f apples, "
        "each of us gets %+.2f, with %+.2f left over.\n",
        people, apples, eachgets, someleft );

fesetround( saverounding );            // Restore previous setting

This code produces the following output:

If there are -2.25 of us and +3.30 apples, each of us gets -1.00, with +1.05 left over.

See Also

The C99 functions remainder() and remquo()

Get C in a Nutshell now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.