【发布时间】:2020-06-06 15:59:24
【问题描述】:
我正在阅读 David Goldberg 的“What Every Computer Scientist Must Know About Floating Point Numbers”,并遇到了关于 ULP 的部分。他举了一个例子:
实际结果:0.0314 = 3.14 x 10 -2
最近的 FP 编号:3.12 x 10 -2
所以,ULP = (3.14 - 3.12) x 10 2 = 2
但是,我无法直观地理解这实际上意味着什么,需要一些帮助。这里的“单位”是什么意思?
【问题讨论】:
-
我有 Goldberg 的论文,既是 1991 年原始出版物的副本,也是经过编辑的再版,我没有具体日期。我在这两个版本中都找不到您显示的示例。 (有一个使用 .0314 的示例,但它说 error 在最后是 2 个单位,而不是 ULP 是 2。)请提供完整的源代码信息:您在哪里找到它、日期和任何其他识别信息,以及您看到该示例的部分名称或编号。
-
docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html,“相对错误和 ULP”部分
-
论文的标题是每个计算机科学家都应该知道的浮点数运算,而不是每个计算机科学家都必须知道的浮点数,并且论文中的文字与此问题中给出的不同。在向他人传达词语时,不要改变词语,尤其是在改变其含义的方式时,这一点很重要。 Goldberg 讨论的是计算结果,而不是“最近的 FP 编号”。这些是不同的东西。 Goldberg 说错误是 2 ULP,而不是 ULP = 2。