We recommend using Visual Studio 2017

modf, modff, modfl


The new home for Visual Studio documentation is Visual Studio 2017 Documentation on docs.microsoft.com.

The latest version of this topic can be found at modf, modff, modfl.

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   
long double modfl(  
   long double x,  
   long double * intptr  


Floating-point value.

Pointer to stored integer portion.

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

The modf functions break 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 that take and return float or long double parameters. In a C program, modf always takes two double values and returns a double value.

RoutineRequired header
modf, modff, modflC: <math.h>

C++: , <cmath> or <math.h>

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  

Floating-Point Support