C++官网参考链接:https://cplusplus.com/reference/cmath/scalbln/
函数
<cmath>
scalbln
C99
double scalbln(double x, long int n);
float scalblnf(float x, long int n);
long double scalblnl(long double x, long int n);
C++11
double scalbln(double x, long int n);
float scalbln(float x, long int n);
long double scalbln(long double x, long int n);
double scalbln(T x, long int n); // additional overloads for integral types
使用浮点基指数缩放有效值(long)
将x乘以FLT_RADIX的n次幂,返回相同的结果:
scalbln(x,n) = x * FLT_RADIX^n
假设x和n是系统中浮点数的组成部分;在这种情况下,这个函数可以优化到比显式计算值的理论操作更有效。
这个函数还有另一个版本:scalbn,它与此相同,只是它的第二个实参是一个int类型。
C99
头文件
C++11
在此头文件(
形参
x
值表示有效值。
exp
指数的值。
返回值
返回x * FLT_RADIX^n。
如果结果的绝对大小太大,无法用返回类型的值表示,则函数返回带有适当符号的HUGE_VAL(或HUGE_VALF或HUGE_VALL),并可能发生上溢范围错误(如果太小,则函数返回0,并可能发生下溢范围错误)。
如果出现范围错误:
—math_errhandling具有MATH_ERRNO集合:全局变量errno设置为ERANGE。
—math_errhandling具有MATH_ERREXCEPT集合:引发FE_OVERFLOW或FE_UNDERFLOW。
用例
/* scalbln example */
#include
#include
#include
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;
}
输出: