modf, modff, modfl

Divide un valore a virgola mobile in parte frazionaria e parte intera.

Sintassi

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

Parametri

x
Valore a virgola mobile.

intptr
Puntatore alla parte intera archiviata.

Valore restituito

Questa funzione restituisce la parte frazionaria firmata di x. Non viene restituito alcun errore.

Osservazioni:

La funzione modf suddivide il valore a virgola mobile x nelle parti frazionaria e intera, ognuna delle quali ha lo stesso segno di x. Viene restituita la parte frazionaria con segno di x. La parte integer viene archiviata come valore a virgola mobile in intptr.

modf ha un'implementazione che usa SSE2 (Streaming SIMD Extensions 2). Vedere _set_SSE2_enable per informazioni e restrizioni sull'uso dell'implementazione SSE2.

C++ consente l'overload, quindi è possibile chiamare overload di modf che accettino e restituiscano i parametri float e long double. In un programma C modf accetta sempre due valori double e restituisce un valore double.

Per impostazione predefinita, lo stato globale di questa funzione è limitato all'applicazione. Per modificare questo comportamento, vedere Stato globale in CRT.

Requisiti

Ciclo Intestazione obbligatoria
modf, modff, modfl C: <math.h>

C++: o <cmath><math.h>

Per altre informazioni sulla compatibilità, vedere Compatibility (Compatibilità).

Esempio

// 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

Vedi anche

Supporto matematico e a virgola mobile
frexp
ldexp