1

我想要 a 的绝对值long double

根据<cmath><math.h>,可获得以下信息:

     double fabs (double x);
     float fabs (float x);
     long double fabs (long double x);

但是,在执行时long double ld = fabs(static_cast<long double>(0));,我收到以下警告(LLVM 7.1):

Absolute value function 'fabs' given an argument of type 'long double' but has parameter of type 'double' which may cause truncation of value

怎么来的?

还有什么其他方法可以获得 a 的绝对值long double

编辑:

std::abs最终完成了这项工作。然而,std::fabs没有。正如评论中指出的那样,这可能是由于不符合要求的实施。

4

1 回答 1

4

根据 cppreference http://en.cppreference.com/w/c/numeric/math/fabshttp://en.cppreference.com/w/cpp/numeric/math/fabsfabs全局命名空间中的 C 版本只接受一个double参数,你需要使用fabsl. 但是std::fabs,或者std::abs应该long double为您提供适当的重载。

于 2016-08-09T18:33:51.137 回答