Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Získá mantisu a exponent čísla s plovoucí desetinnou čárkou.
Syntaxe
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
Parametry
x
Hodnota s plovoucí desetinou čárkou
expptr
Ukazatel na uloženou celočíselnou exponent.
Vrácená hodnota
frexp vrátí mantisu. Pokud x je 0, funkce vrátí hodnotu 0 pro mantisu i exponent. Pokud expptr ano NULL, je vyvolána neplatná obslužná rutina parametru, jak je popsáno v ověření parametru. Pokud je spuštění povoleno pokračovat, tato funkce nastaví errno EINVAL hodnotu 0 a vrátí hodnotu 0.
Poznámky
Funkce frexp rozdělí hodnotu s plovoucí desetinnou čárkou (x) na mantisu (m) a exponent (n), aby absolutní hodnota m byla větší nebo rovna 0,5 a menší než 1,0 am x = * 2.n Celočíselná exponent n je uložena v umístění, na které expptrodkazuje .
C++ umožňuje přetížení, takže můžete volat přetížení frexp. Pokud v programu jazyka C nepoužíváte <makro tgmath.h> k volání této funkce, frexp vždy vezme double a int ukazatel a vrátí hodnotu double.
Pokud použijete <makro tgmath.h>frexp() , typ argumentu určuje, která verze funkce je vybrána. Podrobnosti najdete v tématu Matematika pro obecné typy.
Ve výchozím nastavení je globální stav této funkce vymezen na aplikaci. Chcete-li toto chování změnit, přečtěte si téma Globální stav v CRT.
Požadavky
| Function | Požadovaný hlavičkový soubor |
|---|---|
frexp, , frexpffrexpl |
<math.h> |
frexp makro |
<tgmath.h> |
Další informace o kompatibilitě najdete v tématu Kompatibilita.
Příklad
// 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
Viz také
Podpora pro matematiku a plovoucí desetinou čárku
ldexp
modf, , modffmodfl