在比赛中,我因对浮点数使用了 <cmath> 中的 abs 而寄掉了。
如下代码:
#include <bits/stdc++.h>
int main() {
std::cout << abs(24.0056 - 24);
return 0;
}
在本地(Windows,64 位,DEV 编译,编译参数 -std=c++14)输出 0,在学校 OJ(Linux,编译参数 -O2 -lm -mx32 -std=c++14)输出 0,但在洛谷在线 IDE 中(C++14 (GCC 9))输出了预期的 0.0056。
在上文中前两个环境下,若将 abs 替换为 fabs,则输出预期的 0.0056。
cppreference 中提到了对于 abs,当参数 arg 为 double 时,返回类型为 double。
我想了解上述不符合预期的情况出现的原因。感激不尽。