确定第一个值和第二个值之间的正数差。
语法
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 later
参数
x
第一个值。
y
第二个值。
返回值
返回 x 和 y 之间的正数差:
| 返回值 | 方案 |
|---|---|
x-y |
if x>y |
| 0 | if x<= y |
否则,可能返回以下错误之一:
| 问题 | 返回值 |
|---|---|
| 溢出范围错误 | + HUGE_VAL、+ HUGE_VALF,或 + HUGE_VALL |
| 下溢范围错误 | 正确值(舍入后) |
x 或 y 为 NaN |
NaN |
按 _matherr 中所指定的内容报告错误。
备注
由于 C++ 支持重载,您可以调用采用并返回 fdim 和 float 类型的 long double 的重载。 在 C 程序中,除非使用 <tgmath.h> 宏调用此函数,否则 fdim 始终采用并返回 double。
如果使用 <tgmath.h>fdim() 宏,则参数的类型将决定选择哪个版本的函数。 有关详细信息,请参阅泛型类型数学。
除了 NaN 处理以外,此函数等同于 fmax(x - y, 0)。
要求
| 函数 | C 标头 | C++ 标头 |
|---|---|---|
| .- . | <math.h> | <cmath> |
fdim 宏 |
<tgmath.h> |
有关兼容性的详细信息,请参阅 兼容性。
另请参阅
按字母顺序显示的函数参考
.- .