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

scalbln

函数  <cmath> <ctgmath>

C99 double scalbln (double x , int exp);
float scalblnf (float x , int exp);
long double scalblnl (long double x , int exp);
C++11 double scalbln (double x , int exp);
float scalbln (float x , int exp);
long double scalbln (long double x , int exp);
double scalbln (T x , int exp);     // additional overloads for integral types

计算底数指数形式浮点数(long)
计算底数指数形式浮点数
将x乘以FLT_RADIX为底数的exp次方,返回计算结果:
scalbln(x,exp) = x * FLT_RADIXexp

假设x和exp是系统中浮点数的组成部分;在这种情况下,可以优化该函数,使其比显式计算值的理论操作更有效。

这个函数还有另一个版本:scalbn,它与该函数相同,只是它接受一个int作为第二个实参。
C99 头文件<tgmath.h> 提供了该函数的泛型类型宏版本。
C++11 这个头文件(<cmath>)为整型提供了额外的重载:这些重载在计算之前将x转换为double (在T是任何整型时定义)。

☲  参数


x
表示有效位数的值
exp
指数

☉  返回值



返回x * FLT_RADIXexp
如果返回类型的值太大,函数返回HUGE_VAL (或HUGE_VALFHUGE_VALL)和相应的符号, 并且一个溢出范围错误可能发生(如果过小,则函数返回0,和下溢范围错误可能发生)。

如果出现溢出范围错误:
-并且math_errhandling设置了MATH_ERRNO: 全局变量errno设置为 ERANGE。
-并且math_errhandling设置了MATH_ERREXCEPT: 触发 FE_OVERFLOW 或者 FE_UNDERFLOW

☣  示例



/* scalbln example */
#include <stdio.h>      /* printf */
#include <float.h>      /* FLT_RADIX */
#include <math.h>       /* scalbn */

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

  param = 1.50;
  n = 4L;
  result = scalbln (param , n);
  printf ("%f * %d^%d = %f\n", param, FLT_RADIX, n, result);
  return 0;
}

输出:
1.500000 * 2^4 = 24.000000

🍄  另请参阅



ldexp 以有效位数和指数生成值 (function )
logb 浮点对数(function )

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