modf - cppreference.com

##### cppreference.com

##### Search

Create account

##### Namespaces

- Page
- Discussion

##### Variants

##### Views

- View
- Edit
- History

##### Actions

# modf

From cppreference.com
< c‎ | numeric‎ | math

Defined in header `<math.h>` |  |
float modff( float arg, float* iptr ); |  | (since C99)
double modf( double arg, double* iptr ); |  |
long double modfl( long double arg, long double* iptr ); |  | (since C99)

Decomposes given floating point value `arg` into integral and fractional parts, each having the same type and sign as `arg`. The integral part (in floating-point format) is stored in the object pointed to by `iptr`.

### [edit] Parameters

arg | - | floating point value
iptr | - | pointer to floating point value to store the integral part to

### [edit] Return value

The fractional part of `arg` with the same sign as `arg`. The integral part is put into the value pointed to by `iptr`.

### [edit] Example

Run this code

    #include <stdio.h>
    #include <math.h>

    int main(void)
    {
        double whole,fract;
        fract = modf(+1.5,&whole);
        printf("%+4.0f   %+f\n", whole,fract);
        fract = modf(-1.5,&whole);
        printf("%+4.0f   %+f\n", whole,fract);
        fract = modf(+INFINITY,&whole);
        printf("%+4.0f   %+f\n", whole,fract);
        fract = modf(-INFINITY,&whole);
        printf("%+4.0f   %+f\n", whole,fract);
        fract = modf(+NAN,&whole);
        printf("%+4f   %+f\n", whole,fract);
        fract = modf(-NAN,&whole);
        printf("%+4f   %+f\n", whole,fract);

        return 0;
    }

Possible output:

    +1   +0.500000
      -1   -0.500000
    +inf   +0.000000
    -inf   -0.000000
    +nan   +nan
    -nan   -nan

### [edit] See also

trunctruncftruncl (C99)(C99)(C99) | rounds to nearest integer not greater in magnitude than the given value (function) [edit]
C++ documentation for modf

Retrieved from "http://en.cppreference.com/mwiki/index.php?title=c/numeric/math/modf&oldid=70143"