为什么 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++ 的情况下不太可能)。
std::abs(0.5f)
的结果是0
,因为浮点数没有重载。为什么?我正在使用 G++。
在使用 std::abs
的重载时,您必须 非常 小心,因为一些标准库实现将重载散布在许多文件中,其中一些文件隐式包含在其他人,例如 <iostream>
.
如果您 #include <cmath>
或 #include <cstdlib>
(C++17 中的第二个)在 您的 std::abs(0.5f)
之前 float
重载将可用。如果不是这种情况,那么您的编译器/标准库实现中存在错误(在 g++ 的情况下不太可能)。