使用默认的 std::max/min 比较浮点数准吗?
  • 板块学术版
  • 楼主questRush
  • 当前回复4
  • 已保存回复4
  • 发布时间2020/11/16 04:10
  • 上次更新2023/11/5 07:57:47
查看原帖
使用默认的 std::max/min 比较浮点数准吗?
278521
questRush楼主2020/11/16 04:10

比如针对两个浮点数 aabb 求最大值,是直接

double a = 0.0001;
double b = 0.000001;
double c = std::max(a, b);

还是必须加上精度判断

constexpr double EPS = 1e-8;
inline int sgn(const double &x) {
    if (x > EPS) return 1;
    if (x > -EPS) return 0;
    return -1;
}

inline const static
double &doubleMax(const double &l, const double &r) {
    return sgn(l - r) >= 0 ? l : r;
}

double a = 0.0001;
double b = 0.000001;
double c = doubleMax(a, b);

最近在学计算几何 所以精度问题很重要 想确认下

2020/11/16 04:10
加载中...