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 undm
x
= * 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 int
double
.
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 Typgengenerische Mathematik.
Standardmäßig gilt der globale Zustand dieser Funktion für die Anwendung. Wie Sie dieses Verhalten ändern, erfahren Sie unter Globaler Status in der 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 Unterstützung und Gleitkommaunterstützung
ldexp
modf
, modff
modfl