【发布时间】:2019-05-15 17:05:03
【问题描述】:
我已经阅读了网络上的多个资源,并且我知道在比较浮点数时没有单一值或通用参数。我已经阅读了from here 的几个回复,并从 Google 测试中找到了用于比较浮点数的代码。我想更好地理解 ULP 的含义及其价值。从我阅读的源代码中读取cmets:
单次浮点运算的最大误差为 0.5 个单位 最后一个地方。在 Intel CPU 上,所有浮点计算都是 以 80 位精度完成,而 double 具有 64 位。因此,4 日常使用应该够用了。
目前还不清楚为什么“因此 4 就足够了”。谁能解释为什么?据我了解,考虑到浮点数的有效位数(6 /7) 或双 (15/16)。对吗?
【问题讨论】:
-
更多阅读(如果您有兴趣 - 不是我的博客):randomascii.wordpress.com/2013/02/07/… 整个系列内容非常丰富。
-
要清楚,这不是“我们的数字之间的差异”,而是 relative “我们的数字之间的差异” - 相对于操作数/结果的大小。它可能会变得复杂。
标签: c++ floating-point