获取浮点数的尾数和指数#
参考:frexp
float frexp(
float x,
int * expptr
); // C++ only
long double frexp(
long double x,
int * expptr
); // C++ only
参数:
x
:浮点值。expptr
:指向存储的整数指数的指针。
frexp()
返回尾数。 如果 x
为 0
,则该函数将返回 0
表示尾数和指数。如果 expptr
是 NULL
,则调用无效的参数处理程序,如参数验证中所述。 如果允许执行继续,则该函数将 errno
设置为 EINVAL
并返回 0
。
备注
frexp
函数将浮点值(x
)分解为尾数(mantissa m
)和指数(exponent,n
),使绝对值 m
大于或等于 0.5
且小于 1.0
,并且 n
存储在由 expptr
指向的位置。
#include <iostream>
double x, y;
int n;
x = 16.4;
y = frexp(x, &n);
std::cout << "std::frexp(x, &n) => "
<< x << " = " << y << " * "
<< "(1 << " << n << ")";
std::frexp(x, &n) => 16.4 = 0.5125 * (1 << 5)
将双精度有效数字转换为整数有效数字,即将小数点放在第 31 位和第 30 位之间。这是通过将双精度值乘以