Funkcja frexp () w C ++ rozbija liczbę zmiennoprzecinkową na jej binarną wartość statystyczną.
Binarna różnica jest zmiennoprzecinkową, której wartość bezwzględna (mantysa) znajduje się w przedziale (0,5, 1), a wykładnik całkowity dla 2.
Funkcja jest zdefiniowana w pliku nagłówkowym.
Matematycznie,
x = binarna różnica * 2 wykładnik
gdzie wykładnik jest przechowywany w miejscu wskazywanym przez exp, a binarny symbol jest wartością zwracaną przez frexp ().
frexp () prototyp (w standardzie C ++ 11)
double frexp (double x, int * exp); float frexp (float x, int * exp); long double frexp (long double x, int * exp); double frexp (T x, int * exp); // Dla typu całkowitego
Funkcja frexp () przyjmuje dwa argumenty i zwraca wartość logiczną mantysy typu double
, float
lub long double
.
frexp () Parametry
- x - wartość do rozłożenia.
- exp - wskaźnik do liczby całkowitej, w której ma być przechowywana wartość wykładnika.
frexp () Wartość zwracana
Funkcja frexp () zwraca wartość binarną, której wartość bezwzględna mieści się w przedziale (0,5, 1). Jeśli x jest równe zero, zarówno istotna, jak i wykładnik są równe zero.
frexp () zwracają wartościParametr (x) | Znaczenie binarne | Wykładnik potęgowy |
---|---|---|
0 | 0 | 0 |
x> = 1 | Pozytywny | Pozytywny |
x <= -1 | Negatywny | Pozytywny |
-1 <x <0 | Negatywny | Negatywny |
0 <x <1 | Pozytywny | Negatywny |
Przykład 1: Jak funkcja frexp () działa w C ++?
#include #include using namespace std; int main () ( double x = 6.81, significand; int *exp; significand = frexp(x , exp); cout << x << " = " << significand << " * 2^" << *exp << endl; return 0; )
Po uruchomieniu programu wynik będzie następujący:
6,81 = 0,85125 * 2 3
Przykład 2: funkcja frexp () z typem całkowitym
#include #include using namespace std; int main () ( double significand; int *exp, x = 25; significand = frexp (x , exp); cout << x << " = " << significand << " * 2^" << *exp << endl; return 0; )
Po uruchomieniu programu wynik będzie następujący:
25 = 0,78125 * 2 5