c++ - 为什么我会使用 2 的补码来比较两个 double 而不是将它们的差异与 epsilon 值进行比较?

标签 c++ floating-point double

引用herehere ...为什么我要使用二进制补码而不是 epsilon 方法?对于大多数情况,epsilon 方法似乎已经足够好了。


更新:我纯粹是在寻找理论上的原因,说明为什么您会使用一个而不是另一个。我一直使用 epsilon 方法。

有没有人用过2的补码比较成功?为什么?为什么不呢?

最佳答案

您引用的第二个链接提到了一篇对问题进行了相当长的描述的文章:

http://www.cygnus-software.com/papers/comparingfloats/comparingfloats.htm

但除非你正在调整性能,否则我会坚持使用 epsilon,这样人们就可以调试你的代码

关于c++ - 为什么我会使用 2 的补码来比较两个 double 而不是将它们的差异与 epsilon 值进行比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/96233/

相关文章:

Java Swing 双缓冲区问题

c++ - GCC C/C++ 双重行为

c++ - c++ 为 `my_map[i] = my_map.size()` 做什么?

c++ - RVO 是否与 "new"一起使用?

python - Python如何记住用于指定 float 的小数位数?

Ruby float 到 Binary32

floating-point - 为什么 double 会像他们那样工作

c++ - 声明 double* 数组时出现损坏的堆错误

c++ - 将 "read"行放回文件中

c++ - 如何处理鼠标右键单击 QSystemTrayIcon?