当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


C语言 scalbn用法及代码示例


C语言math头文件(math.h)中scalbn函数的用法及代码示例。

用法:

     double scalbn  (double x     , int n);
      float scalbnf (float x      , int n);
long double scalbnl (long double x, int n);
使用浮点基 index 缩放有效位数
缩放x经过FLT_RADIX提升到n,返回结果与:

scalbn(x,n)= x *FLT_RADIXn

假定xn是系统中浮点数的组成部分;在这种情况下,可以优化此函数以使其比理论上显式计算值的效率更高。

在大多数平台上,FLT_RADIX2,使此函数等效于ldexp

标头<tgmath.h>提供此函数的type-generic宏版本。
额外的过载在此头文件中提供(<cmath>) 为了整数类型:这些重载有效地转换x到一个double计算之前(为T有任何整数类型)。

此函数还存在另一个版本:scalbln,这是相同的,除了它需要一个long int作为第二个论点。

参数

x
代表重要的
exp
价值 index

返回值

返回x*FLT_RADIXn
如果结果的大小太大而无法用返回类型的值表示,则该函数将返回HUGE_VAL(或者HUGE_VALF或者HUGE_VALL)并带有适当的符号,并且溢出范围误差可能会发生(如果太小,该函数将返回零,并且下溢范围误差可能导致)。

如果一个范围误差发生:
- 和math_errhandlingMATH_ERRNO设置:全局变量errno被设定为ERANGE
- 和math_errhandlingMATH_ERREXCEPT设置:或者FE_OVERFLOW或者FE_UNDERFLOW被抛出

示例

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

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

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


输出:

1.500000 * 2^4 = 24.000000

相关用法


注:本文由纯净天空筛选整理自C标准库大神的英文原创作品 C scalbn function。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。