C ++ funkcija „frexp ()“ skaido slankiojo kablelio skaičių į dvejetainį reikšmingumą.
Dvejetainis reikšmingumas yra slankusis taškas, kurio absoliuti vertė (mantissa) yra intervale (0,5, 1) ir sveikasis skaičius, reiškiantis 2.
Funkcija apibrėžta antraštės faile.
Matematiškai,
x = Dvejetainis reikšmė * 2 rodiklis
kur, eksponentas yra saugomas exp nurodytoje vietoje, o dvejetainis reikšmė yra vertė, kurią grąžina frexp ().
„frexp“ () prototipas (pagal standartą C ++ 11)
dvigubas frexp (dvigubas x, int * exp); „float frexp“ („float x“, int * exp); ilgas dvigubas frexp (ilgas dvigubas x, int * exp); dvigubas frexp (T x, int * exp); // integraliniam tipui
Frexp () funkcija trunka du argumentus ir grąžina dvejetainis significand vertę tipo double
, float
arba long double
.
frexp () parametrai
- x - suskaidoma vertė.
- exp - rodiklis iki sveiko skaičiaus, kuriame turi būti saugoma rodiklio reikšmė.
frexp () Grąžinimo vertė
Funkcija „frexp“ () grąžina dvejetainę reikšmę, kurios absoliuti reikšmė yra intervale (0,5, 1). Jei x yra nulis, tiek reikšmė, tiek rodiklis yra nulis.
„frexp“ () grąžinimo reikšmėsParametras (x) | Dvejetainis reikšmingumas | Eksponentas |
---|---|---|
0 | 0 | 0 |
x> = 1 | Teigiamas | Teigiamas |
x <= -1 | Neigiamas | Teigiamas |
-1 <x <0 | Neigiamas | Neigiamas |
0 <x <1 | Teigiamas | Neigiamas |
1 pavyzdys: Kaip veikia frexp () funkcija 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; )
Kai paleisite programą, išvestis bus:
6,81 = 0,85125 * 2 3
2 pavyzdys: funkcija „frexp ()“ su integraliniu tipu
#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; )
Kai paleisite programą, išvestis bus:
25 = 0,78125 * 2 5