为什么 std::abs() 不适用于浮点数

Why doesn't std::abs() works with floats

std::abs(0.5f)的结果是0,因为浮点数没有重载。为什么?我正在使用 G++。

在使用 std::abs 的重载时,您必须 非常 小心,因为一些标准库实现将重载散布在许多文件中,其中一些文件隐式包含在其他人,例如 <iostream>.

如果您 #include <cmath>#include <cstdlib>(C++17 中的第二个) 您的 std::abs(0.5f) 之前 float 重载将可用。如果不是这种情况,那么您的编译器/标准库实现中存在错误(在 g++ 的情况下不太可能)。

参考:https://en.cppreference.com/w/cpp/numeric/math/fabs