IEEE浮点数舍入

3
对于IEEE浮点数,为什么以下等式成立:epsilon m?
(1-1e-16)-1 = -1.1102e-16 1 + (1e-16-1)= 1.1102e-16
而另一方面,以下等式等于0:
(1 + 1e-16)-1 = 0
有人能解释一下吗?对于最后一个问题,我理解:
当1 ≤ x ≤ 1 + M时,fl(x)= 1, 当1 + M<x≤1 + 2M时,fl(x)= 1 + 2M
难道前两个结果不应该等于0吗?因为当1-M<x≤1时,fl(x)= 1,当1-2M≤x≤1-M时,fl(x)= 1-2M?

你在这里使用什么值作为 M?是 2^{-53} 还是 2^{-52} - Mark Dickinson
1个回答

3

机器精度并不是一个一致定义的术语,因为不同的来源和语言会以不同的方式定义它。

如果我们将M取为2-53 ≈ 1.11 × 10-16(即1和前一个浮点数之间的差距,或者是1和下一个浮点数之间差距的一半),那么在1附近的浮点数线看起来像这样:

--|----|----|----|---------|---------|------
     1-2M  1-M   1        1+2M      1+4M

所以,在标准四舍五入中,遇到平局时选择偶数,我们有以下内容:
  • 对于1 - 3M/2 < x < 1 - M/2,fl(x) = 1-M
  • 对于1 - M/2 ≤ x ≤ 1 + M,fl(x) = 1
  • 对于1 + M < x < 1 + 3M,fl(x) = 1+2M
所以,在第一种情况下,1 - 1e-16将会四舍五入为1 - M,在第二种情况下,1 + 1e-16将会四舍五入为1。

所以,你的意思是前一个浮点数每M个舍入一次,而下一个浮点数每2M个舍入一次。这是因为前一个fpn是1/2,而下一个fpn是2。对吗? - Kevin Lee
是的:浮点数之间的间隔在每个二进制指数中翻倍:https://en.wikipedia.org/wiki/Binade - Simon Byrne
太棒了!感谢你的帮助! - Kevin Lee
@KevinLee:如果您觉得有帮助,请接受答案 - Mark Dickinson
我是通过点击绿色的勾来完成这个操作吗?我不太习惯使用这个网站。 - Kevin Lee

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接