fdim, fdimf, fdiml

确定第一个值和第二个值之间的正数差。

语法

double fdim(
   double x,
   double y
);

float fdim(
   float x,
   float y
); //C++ only

long double fdim(
   long double x,
   long double y
); //C++ only

float fdimf(
   float x,
   float y
);

long double fdiml(
   long double x,
   long double y
);

#define fdim(X) // Requires C11 or higher

参数

x
第一个值。

y
第二个值。

返回值

返回 xy 之间的正数差:

返回值 方案
x-y if x>y
0 if x<= y

否则,可能返回以下错误之一:

问题 返回值
溢出范围错误 + HUGE_VAL、+ HUGE_VALF,或 + HUGE_VALL
下溢范围错误 正确值(舍入后)
xy 为 NaN NaN

_matherr 中所指定的内容报告错误。

备注

由于 C++ 支持重载,您可以调用采用并返回 fdimfloat 类型的 long double 的重载。 在 C 程序中,除非使用 <tgmath.h> 宏调用此函数,否则 fdim 始终采用并返回 double

如果使用 <tgmath.h>fdim() 宏,则参数的类型将决定选择哪个版本的函数。 有关详细信息,请参阅泛型类型数学

除了 NaN 处理以外,此函数等同于 fmax(x - y, 0)

要求

函数 C 标头 C++ 标头
fdim, fdimf, fdiml <math.h> <cmath>
fdim <tgmath.h>

有关兼容性的详细信息,请参阅 兼容性

另请参阅

按字母顺序显示的函数参考
fmaxfmaxffmaxl
abslabsllabs_abs64