English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
C++ Fonctions de bibliothèque <cmath>
C ++中的frexp(x,exp)函数返回一个浮点数的尾数和指数。
二进制有效位数是一个浮点,其绝对值(尾数)在区间[0.5,1]中,整数指数为2。
该函数在<cmath>头文件中定义。
数学上
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); //为整型
frexp()函数有两个参数,并返回double,float或long double类型的二进制有效值。
x -要分解的值。
exp -指向要存储指数值的整数的指针。
frexp()函数返回尾数,其绝对值位于范围[0.5,1]中。如果x为零,则有效数和指数均为零。
参数(x) | 二进制有效位 | 指数 |
---|---|---|
0 | 0 | 0 |
x> = 1 | 正 | 正 |
x <= -1 | 负 | 正 |
-1 <x < 0 | 负 | 负 |
0 < x <1 | 正 | 负 |
#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
#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