📅  最后修改于: 2020-09-25 07:41:52             🧑  作者: Mango
二进制有效位数是一个浮点,其绝对值(尾数)在区间[0.5,1)中,整数指数为2。
该函数在
数学上
x = Binary significand * 2exponent
其中,指数存储在exp所指向的位置,而二进制有效位数是frexp()返回的值。
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); // For integral type
frexp() 函数接受两个参数,并返回double
, float
或long double
类型的二进制有效值。
frexp() 函数返回二进制有效数字,其绝对值位于间隔[0.5,1)中。如果x为零,则有效数和指数均为零。
Parameter (x) | Binary Significand | Exponent |
---|---|---|
0 | 0 | 0 |
x >= 1 | Positive | Positive |
x <= -1 | Negative | Positive |
-1 < x < 0 | Negative | Negative |
0 < x < 1 | Positive | Negative |
#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;
}
运行该程序时,输出为:
6.81 = 0.85125 * 2^3
#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;
}
运行该程序时,输出为:
25 = 0.78125 * 2^5