?
Dokumen ini menggunakan Manual laman web PHP Cina Lepaskan
在頭文件<math.h>中定義 | ||
---|---|---|
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以來) |
在頭文件<tgmath.h>中定義 | ||
#define fdim(x,y) | (4) | (自C99以來) |
1-3)返回x和y之間的正差,即如果x> y,則返回x-y,否則(如果x≤y)返回+0。
4)類型 - 通用宏:如果任何參數(shù)的類型為long double,則調(diào)用fdiml。 否則,如果任何參數(shù)具有整數(shù)類型或具有double類型,則調(diào)用fdim。 否則,調(diào)用fdimf。
x, y | - | floating point value |
---|
如果成功,則返回x和y之間的正差異。
如果發(fā)生由溢出引起的范圍錯誤,則返回+ HUGE_VAL,+ HUGE_VALF或+ HUGE_VALL。
如果發(fā)生由于下溢導(dǎo)致的范圍錯誤,則返回正確的值(舍入后)。
按照math_errhandling中的指定報告錯誤。
如果實現(xiàn)支持IEEE浮點運算(IEC 60559),
如果任一參數(shù)是NaN,則返回NaN
除NaN處理要求外,相當(dāng)于fmax(x-y,0)。
#include <stdio.h>#include <math.h>#include <errno.h>#include <fenv.h>#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標(biāo)準(zhǔn)(ISO / IEC 9899:2011):
7.12.12.1 fdim函數(shù)(p:257)
7.25類型通用數(shù)學(xué)<tgmath.h>(p:373-375)
F.10.9.1 fdim函數(shù)(p:530)
C99標(biāo)準(zhǔn)(ISO / IEC 9899:1999):
7.12.12.1 fdim函數(shù)(p:238)
7.22類型通用數(shù)學(xué)<tgmath.h>(p:335-337)
F.9.9.1 fdim函數(shù)(p:466)
abslabsllabs(C99) | 計算積分值的絕對值(| x |)(函數(shù)) |
---|---|
fmaxfmaxffmax1(C99)(C99)(C99) | 決定兩個浮點值中較大的一個(函數(shù)) |
| 用于fdim的C ++文檔 |