对于IEEE浮点数,为什么这些等于eps?m?
(1 - 1e-16) - 1 ans = -1.1102e-16
1 +(1e-16 - 1) ans = 1.1102e-16
另一方面,低于等于0
(1 + 1e-16) - 1 ans = 0
有人可以向我解释原因吗?对于最后一个,我明白了 fl(x)= 1,1≤x≤1+ M,fl(x)= 1 + 2M,1 + M <1。 x≤1+ 2M
由于fl(x)= 1表示1 - M <1,因此前两个不应该等于0。 x≤1且fl(x)= 1 - 2M,1 - 2M≤x≤1 - M?
答案 0 :(得分:3)
Machine epsilon并不是一个定义明确的术语,因为不同的来源和语言以不同的方式定义它。
如果我们将M取为2 -53 ≈1.11×10 -16 (即1与之前浮点之间的差距数字,或1和下一个浮点数之间的差距的一半)然后1附近的浮点数线看起来像:
--|----|----|----|---------|---------|------
1-2M 1-M 1 1+2M 1+4M
所以,在最接近标准的一轮,与偶数的关系,我们有
因此,在第一种情况下,1 - 1e-16
将舍入为1 - M,而在第二种情况下,1 + 1e-16
将舍入为1