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