frexp, frexpf, frexpl

Ruft die Mantisse und den Exponenten einer Gleitkommazahl ab

Syntax

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

Parameter

x
Gleitkommawert.

expptr
Zeiger auf gespeicherten Integer-Exponenten

Rückgabewert

frexp gibt die Mantisse zurück. Wenn x 0 ist, gibt die Funktion 0 für die Mantisse und den Exponenten zurück. Wenn expptr ja NULL, wird der ungültige Parameterhandler aufgerufen, wie in der Parameterüberprüfung beschrieben. Wenn die weitere Ausführung zugelassen wird, setzt diese Funktion errno auf EINVAL und gibt "0" zurück.

Hinweise

Die frexp Funktion unterteilt den Gleitkommawert (x) in eine Mantissa (m) und einen Exponenten (n), sodass der absolute Wert m größer oder gleich 0,5 und kleiner als 1,0 undmx = * 2n ist. Der Integer-Exponent n wird an dem Speicherort gespeichert, auf den expptr zeigt.

Da C++ ein Überladen zulässt, können Sie Überladungen von frexp aufrufen. In einem C-Programm, es sei denn, Sie verwenden das <Makro tgmath.h> , um diese Funktion aufzurufen, frexp verwendet immer einen double Zeiger und gibt einen intdouble.

Wenn Sie das <Makro tgmath.h>frexp() verwenden, bestimmt der Typ des Arguments, welche Version der Funktion ausgewählt ist. Ausführliche Informationen finden Sie unter "Typgenerika" .

Standardmäßig gilt der globale Zustand dieser Funktion für die Anwendung. Informationen zum Ändern dieses Verhaltens finden Sie im Global state in the CRT.

Anforderungen

Funktion Erforderlicher Header
frexp, frexpf, frexpl <math.h>
frexp-Makro <tgmath.h>

Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität.

Beispiel

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

Siehe auch

Mathematische und Gleitkommaunterstützung
ldexp
modf, modff, modfl