何时使用 fabsf 而不是 fabs

unk*_*SPY 5 c++

我想知道在什么情况下我会使用fabsfabsf来自 cmath/math.h)?

或者解释一下差异,因为它看起来就像一个只是调用另一个。

我在 math.h 中的定义是

_Check_return_ inline float fabs(_In_ float _Xx) _NOEXCEPT

_Check_return_ __inline float __CRTDECL fabsf(_In_ float _X)
Run Code Online (Sandbox Code Playgroud)

eer*_*ika 4

何时使用fabsf而不是fabs

在 C++ 中,几乎没有理由使用fabsf. std::abs与浮点类型一起使用。std::fabs当您希望将整数的绝对值转换为 时可能有用double,但这可能是相当小众的用例。

如果您改为编写 C,那么它几乎同样简单:fabsf当您有float, 以及fabs当您有double. 这同样适用于带f后缀的其他标准数学函数。

我在 math.h 中的定义是

_Check_return_ inline float fabs(_In_ float _Xx) _NOEXCEPT
Run Code Online (Sandbox Code Playgroud)

C++ 标准库指定了std::fabs. 其中一个需要一个float. 如果缺少其他重载,则您的标准库不符合标准。

C 标准库指定double fabs(double). 如果引用的声明适用于 C,则您的标准库不符合标准。