Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Ottiene la mantissa e l'esponente di un numero a virgola mobile.
Sintassi
double frexp(
double x,
int *expptr
);
float frexpf(
float x,
int * expptr
);
long double frexpl(
long double x,
int * expptr
);
#define frexpl(X, INT_PTR) // Requires C11 or later
float frexp(
float x,
int * expptr
); // C++ only
long double frexp(
long double x,
int * expptr
); // C++ only
Parametri
x
Valore a virgola mobile.
expptr
Puntatore all'esponente intero archiviato.
Valore restituito
frexp restituisce la mantissa. Se x è 0, la funzione restituisce 0 sia per la mantissa che per l'esponente. Se expptr è NULL, il gestore di parametri non validi viene richiamato come descritto in Convalida dei parametri. Se l'esecuzione può continuare, la funzione imposta errno suEINVAL e restituisce 0.
Osservazioni:
La frexp funzione suddivide il valore a virgola mobile (x) in una mantissa (m) e un esponente (n), in modo che il valore assoluto di m sia maggiore o uguale a 0,5 e minore di 1,0 em x = * 2.n L'esponente intero n viene archiviato in corrispondenza della posizione a cui punta expptr.
C++ consente l'overload, quindi è possibile chiamare overload di frexp. In un programma C, a meno che non si usi la <macro tgmath.h> per chiamare questa funzione, frexp accetta sempre e double un int puntatore e restituisce un oggetto double.
Se si utilizza la <macro tgmath.h>frexp() , il tipo dell'argomento determina quale versione della funzione è selezionata. Per informazioni dettagliate, vedere La matematica generica dei tipi.
Per impostazione predefinita, lo stato globale di questa funzione è limitato all'applicazione. Per modificare questo comportamento, vedere Stato globale in CRT.
Requisiti
| Funzione | Intestazione obbligatoria |
|---|---|
frexp, frexpf, frexpl |
<math.h> |
frexp macro |
<tgmath.h> |
Per altre informazioni sulla compatibilità, vedere Compatibility (Compatibilità).
Esempio
// crt_frexp.c
// This program calculates frexp( 16.4, &n )
// then displays y and n.
#include <math.h>
#include <stdio.h>
int main( void )
{
double x, y;
int n;
x = 16.4;
y = frexp( x, &n );
printf( "frexp( %f, &n ) = %f, n = %d\n", x, y, n );
}
frexp( 16.400000, &n ) = 0.512500, n = 5
Vedi anche
Supporto matematico e a virgola mobile
ldexp
modf, modff, modfl