Condividi tramite


frexp, frexpf, frexpl

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