Was this page helpful?
Your feedback about this content is important. Let us know what you think.
Additional feedback?
1500 characters remaining
Export (0) Print
Expand All
Expand Minimize

modf, modff

Splits a floating-point value into fractional and integer parts.

double modf(
   double x,
   double *intptr 
float modf(
   float x,
   float *intptr
);  // C++ only
long double modf(
   long double x,
   long double * intptr
);  // C++ only
float modff(
   float x,
   float *intptr 


Floating-point value.
Pointer to stored integer portion.

Return Value

This function returns the signed fractional portion of x. There is no error return.


The modf function breaks down the floating-point value x into fractional and integer parts, each of which has the same sign as x. The signed fractional portion of x is returned. The integer portion is stored as a floating-point value at intptr.

modf has an implementation that uses Streaming SIMD Extensions 2 (SSE2). See _set_SSE2_enable for information and restrictions on using the SSE2 implementation.

C++ allows overloading, so you can call overloads of modf. In a C program, modf always takes two double values and returns a double value.


Routine Required header Compatibility
modf, modff <math.h> ANSI, Win 98, Win Me, Win NT, Win 2000, Win XP

For additional compatibility information, see Compatibility in the Introduction.


All versions of the C run-time libraries.


// crt_modf.c

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

int main( void )
   double x, y, n;

   x = -14.87654321;      /* Divide x into its fractional */
   y = modf( x, &n );     /* and integer parts            */

   printf( "For %f, the fraction is %f and the integer is %.f\n", 
           x, y, n );


For -14.876543, the fraction is -0.876543 and the integer is -14

See Also

Floating-Point Support Routines | Long Double | frexp | ldexp | Run-Time Routines and .NET Framework Equivalents

© 2015 Microsoft