©
This document uses PHP Chinese website manual Release
在头文件<math.h>中定义 | ||
---|---|---|
float exp2f(float n); | (1) | (自C99以来) |
double exp2(double n); | (2) | (自C99以来) |
long double exp2l(long double n); | (3) | (自C99以来) |
在头文件<tgmath.h>中定义 | ||
#define exp2(n) | (4) | (自C99以来) |
1-3)计算2给定的倍率n。
4)类型通用宏:如果n的类型是long double,则调用exp2l。 否则,如果n具有整数类型或类型double,则调用exp2。 否则,调用exp2f。
n | - | floating point value |
---|
如果没有错误发生,则n的基2指数(2n
)被返回。
如果发生由溢出引起的范围错误,则返回+ HUGE_VAL,+ HUGE_VALF或+ HUGE_VALL。
如果由于下溢而发生范围错误,则返回正确的结果(舍入后)。
按照math_errhandling中的指定报告错误。
如果实现支持IEEE浮点运算(IEC 60559),
如果参数是±0,则返回1
如果参数是-∞,则返回+0
如果参数是+∞,则返回+∞
如果参数是NaN,则返回NaN
#include <stdio.h>#include <math.h>#include <float.h>#include <errno.h>#include <fenv.h>#pragma STDC FENV_ACCESS ON int main(void){ printf("exp2(5) = %f\n", exp2(5)); printf("exp2(0.5) = %f\n", exp2(0.5)); printf("exp2(-4) = %f\n", exp2(-4)); // special values printf("exp2(-9) = %f\n", exp2(-0.9)); printf("exp2(-Inf) = %f\n", exp2(-INFINITY)); //error handling errno = 0; feclearexcept(FE_ALL_EXCEPT); printf("exp2(1024) = %f\n", exp2(1024)); if(errno == ERANGE) perror(" errno == ERANGE"); if(fetestexcept(FE_OVERFLOW)) puts(" FE_OVERFLOW raised");}
可能的输出:
exp2(5) = 32.000000exp2(0.5) = 1.414214exp2(-4) = 0.062500exp2(-9) = 0.535887exp2(-Inf) = 0.000000exp2(1024) = Inf errno == ERANGE: Result too large FE_OVERFLOW raised
C11标准(ISO / IEC 9899:2011):
7.12.6.2 exp2函数(p:242-243)
7.25类型通用数学<tgmath.h>(p:373-375)
F.10.3.2 exp2函数(p:521)
C99标准(ISO / IEC 9899:1999):
7.12.6.2 exp2函数(p:223)
7.22类型通用数学<tgmath.h>(p:335-337)
F.9.3.2 exp2函数(p:458)
Expexpfexpl(C99)(C99) | 计算e给定的倍率(ex)(函数) |
---|---|
expper1expm1fexpm1l(C99)(C99)(C99) | 计算e增加到给定的倍率,减去一(ex-1)(函数) |
log2log2flog21(C99)(C99)(C99) | 计算以2为底的对数(log2(x))(函数) |
| exp2的C ++文档 |