C++ 中的frexp() 函数将浮点数分解为其二进制有效数。
二进制有效数是一个浮点数,其绝对值(尾数)位于区间 [0.5, 1) 中,并且是 2 的整数 index 。
该函数在<cmath> 头文件中定义。
数学上,
x = Binary significand * 2exponent
其中, index 存储在 exp 指向的位置,二进制有效数是frexp() 返回的值。
frexp() 原型 [从 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); // For integral type
frexp() 函数接受两个参数并返回类型为 double
, float
或 long double
的二进制有效值。
参数:
- x- 要分解的值。
- exp- 指向要存储 index 值的整数的指针。
返回:
frexp() 函数返回二进制有效数,其绝对值位于区间 [0.5, 1) 内。如果 x 为零,则有效数和 index 都为零。
参数 (x) | 二进制有效位 | index |
---|---|---|
0 | 0 | 0 |
x >= 1 | Positive | Positive |
x <= -1 | Negative | Positive |
-1 < x < 0 | Negative | Negative |
0 < x < 1 | Positive | Negative |
示例 1:frexp() 函数在 C++ 中如何工作?
#include <iostream>
#include <cmath>
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
示例 2:frexp() 具有整数类型的函数
#include <iostream>
#include <cmath>
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
相关用法
- C++ frexp()用法及代码示例
- C++ free()用法及代码示例
- C++ freopen()用法及代码示例
- C++ fread()用法及代码示例
- C++ fcvt()用法及代码示例
- C++ fwscanf()用法及代码示例
- C++ fmax()用法及代码示例
- C++ fdim()用法及代码示例
- C++ fmin()用法及代码示例
- C++ fetestexcept()用法及代码示例
- C++ forward_list::unique()用法及代码示例
- C++ forward_list::emplace_front()用法及代码示例
- C++ fopen()用法及代码示例
- C++ forward_list::max_size()用法及代码示例
- C++ forward_list::reverse()用法及代码示例
- C++ feupdateenv()用法及代码示例
- C++ forward_list::swap()用法及代码示例
- C++ forward_list::front()、forward_list::empty()用法及代码示例
- C++ functional::bad_function_call用法及代码示例
- C++ find_if()用法及代码示例
注:本文由纯净天空筛选整理自 C++ frexp()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。