English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

C++ frexp() 函数使用方法及示例

C++ Fonctions de bibliothèque <cmath>

C ++中的frexp(x,exp)函数返回一个浮点数的尾数和指数。

二进制有效位数是一个浮点,其绝对值(尾数)在区间[0.5,1]中,整数指数为2。

该函数在<cmath>头文件中定义。

数学上

x = Binary significand * 2exponent

其中,指数存储在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); //为整型

frexp()函数有两个参数,并返回double,float或long double类型的二进制有效值。

frexp()参数

  • x -要分解的值。

  • exp -指向要存储指数值的整数的指针。

frexp()返回值

frexp()函数返回尾数,其绝对值位于范围[0.5,1]中。如果x为零,则有效数和指数均为零。

frexp()返回值
参数(x)二进制有效位指数
000
x> = 1
x <= -1
-1 <x < 0
0 < x <1

Exemple1: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;
}

Lorsque le programme est exécuté, la sortie est :

6.81 = 0.85125 * 2^3

Exemple2:带有整数类型的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;
}

Lorsque le programme est exécuté, la sortie est :

25 = 0.78125 * 2^5

  C++ Fonctions de bibliothèque <cmath>