当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


C++ frexp()用法及代码示例


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 , floatlong double 的二进制有效值。

参数:

  • x- 要分解的值。
  • exp- 指向要存储 index 值的整数的指针。

返回:

frexp() 函数返回二进制有效数,其绝对值位于区间 [0.5, 1) 内。如果 x 为零,则有效数和 index 都为零。

frexp() 返回值
参数 (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()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。