Home C&C++函数库 c++ 语法 程序源码 Linux C库

frexp

函数  <cmath> <ctgmath>

C90 double frexp (double x, int* exp);
C99 double frexp (double x , int* exp);
float frexpf (float x , int* exp);
long double frexpl (long double x, int* exp);
C++98 double frexp (double x, int* exp);
float frexp (float x , int* exp);
long double frexp (long double x, int* exp);
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);        // additional overloads for integral types

获得有效位数和指数
将浮点数x分解为以2为底的有效位数(significand)(一个绝对值在0.5(包括)和1.0(不包括)之间的浮点数)和2的整型指数,即:
x = significand * 2 exponente ,例如: 1024.00 = 0.50 * 211

指数存储在exp所指向的位置,有效位数是函数返回的值。
如果x为零,则两个部分(有效位数和指数)都为零。
如果x为负数,则该函数返回的有效位数为负数。

C99 头文件<tgmath.h> 提供了该函数的泛型类型宏版本。
C++11 这个头文件(<cmath>) 为整型提供了额外的重载:这些重载在计算之前将x转换为double. (在T是任何整型时定义)。

☲  参数


x
待分解的值。
exp
指向一个int型的指针,该int型存储指数的值。

☉  返回值



x的有效位数值。 这个值是浮点值,其绝对值位于区间[0.5,1),如果乘以2的exp次方,就得到x。

☣  示例



/* frexp example */
#include <stdio.h>      /* printf */
#include <math.h>       /* frexp */

int main ()
{
  double param, result;
  int n;

  param = 8.0;
  result = frexp (param , &n);
  printf ("%f = %f * 2^%d\n", param, result, n);
  return 0;
}

输出:
8.000000 = 0.500000 * 2^4

🍄  另请参阅



ldexp 从有效位数和指数生成值(function )
log 计算自然对数(function )
pow 次幂(function )

联系我们 免责声明 关于CandCplus 网站地图