社区讨论
关于浮点数比较
灌水区参与者 4已保存回复 4
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 4 条
- 当前快照
- 1 份
- 快照标识符
- @lo927jfd
- 此快照首次捕获于
- 2023/10/28 04:22 2 年前
- 此快照最后确认于
- 2023/10/28 04:22 2 年前
可以像这样把浮点数比较转化为整数比较。然后……浮点数基排(?)
CPPfor (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 条回复,欢迎继续交流。
正在加载回复...