©
Ce document utiliseManuel du site Web PHP chinoisLibérer
在头文件 |
|
|
---|---|---|
float fdimf(float x,float y); |
(1) |
(自C99以来) |
double fdim(double x,double y); |
(2) |
(自C99以来) |
long double fdiml(long double x,long double y); |
(3) |
(自C99以来) |
在头文件 |
|
|
#define fdim(x,y) |
(4) |
(自C99以来) |
1-3)返回x和y之间的正差,即如果x> y,则返回x-y,否则(如果x≤y)返回+0。
4)类型 - 通用宏:如果任何参数的类型为long double,则调用fdiml。 否则,如果任何参数具有整数类型或具有double类型,则调用fdim。 否则,调用fdimf。
x, y |
- |
floating point value |
---|
如果成功,则返回x和y之间的正差异。
如果发生由溢出引起的范围错误,则返回+ HUGE_VAL,+ HUGE_VALF或+ HUGE_VALL。
如果发生由于下溢导致的范围错误,则返回正确的值(舍入后)。
按照math_errhandling中的指定报告错误。
如果实现支持IEEE浮点运算(IEC 60559),
如果任一参数是NaN,则返回NaN
除NaN处理要求外,相当于fmax(x-y,0)。
#include#include #include #include #pragma STDC FENV_ACCESS ON int main(void){ printf("fdim(4, 1) = %f, fdim(1, 4)=%f\n", fdim(4,1), fdim(1,4)); printf("fdim(4,-1) = %f, fdim(1,-4)=%f\n", fdim(4,-1), fdim(1,-4)); //error handling errno = 0; feclearexcept(FE_ALL_EXCEPT); printf("fdim(1e308, -1e308) = %f\n", fdim(1e308, -1e308)); if(errno == ERANGE) perror(" errno == ERANGE"); if(fetestexcept(FE_OVERFLOW)) puts(" FE_OVERFLOW raised");}
可能的输出:
fdim(4, 1) = 3.000000, fdim(1, 4)=0.000000fdim(4,-1) = 5.000000, fdim(1,-4)=5.000000fdim(1e308, -1e308) = inf errno == ERANGE: Numerical result out of range FE_OVERFLOW raised
C11标准(ISO / IEC 9899:2011):
7.12.12.1 fdim函数(p:257)
7.25类型通用数学
F.10.9.1 fdim函数(p:530)
C99标准(ISO / IEC 9899:1999):
7.12.12.1 fdim函数(p:238)
7.22类型通用数学
F.9.9.1 fdim函数(p:466)
abslabsllabs(C99) |
计算积分值的绝对值(| x |)(函数) |
---|---|
fmaxfmaxffmax1(C99)(C99)(C99) |
决定两个浮点值中较大的一个(函数) |
| 用于fdim的C ++文档 |