关于 abs 和 fabs
  • 板块学术版
  • 楼主cqbzlym
  • 当前回复12
  • 已保存回复12
  • 发布时间2022/10/25 20:10
  • 上次更新2023/10/27 05:54:36
查看原帖
关于 abs 和 fabs
245052
cqbzlym楼主2022/10/25 20:10

在比赛中,我因对浮点数使用了 <cmath> 中的 abs 而寄掉了。

如下代码:

#include <bits/stdc++.h>
int main() {
    std::cout << abs(24.0056 - 24);
    return 0;
}

在本地(Windows,64 位,DEV 编译,编译参数 -std=c++14)输出 00,在学校 OJ(Linux,编译参数 -O2 -lm -mx32 -std=c++14)输出 00,但在洛谷在线 IDE 中(C++14 (GCC 9))输出了预期的 0.00560.0056

在上文中前两个环境下,若将 abs 替换为 fabs,则输出预期的 0.00560.0056

cppreference 中提到了对于 abs,当参数 argdouble 时,返回类型为 double

我想了解上述不符合预期的情况出现的原因。感激不尽。

2022/10/25 20:10
加载中...