社区讨论

关于浮点数比较

灌水区参与者 4已保存回复 4

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
4 条
当前快照
1 份
快照标识符
@lo927jfd
此快照首次捕获于
2023/10/28 04:22
2 年前
此快照最后确认于
2023/10/28 04:22
2 年前
查看原帖
可以像这样把浮点数比较转化为整数比较。然后……浮点数基排(?)
CPP
for (double x = -100; x <= 100; x++) for (double y = -100; y <= 100; y++) {
    ll a = *(ll *)&x, b = *(ll *)&y;
    // 如果是负数,翻转除了符号位之外的所有位
    a ^= (a >> 63) & 0x7fffffffffffffff;
    b ^= (b >> 63) & 0x7fffffffffffffff;
    // 浮点数比较貌似与这样转化后的整数比较一致
    int res1 = x < y, res2 = a < b;
    if (res1 != res2)
        cout << x << " " << y << " " << res1 << " " << res2 << "\n";
}

回复

4 条回复,欢迎继续交流。

正在加载回复...