何时使用fabsf而非fabs

时间:2017-01-25 17:05:42

标签: c++

我想知道在fabs上使用fabsf(来自cmath / math.h)的情况是什么?

或解释看到的区别,因为看起来只是一个人只是打电话给对方。

我在math.h中的定义是

_Check_return_ inline float fabs(_In_ float _Xx) _NOEXCEPT

_Check_return_ __inline float __CRTDECL fabsf(_In_ float _X)

1 个答案:

答案 0 :(得分:1)

  

何时使用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

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

C标准库指定double fabs(double)。如果引用的声明适用于C。

,则您的标准库不符合标准