IEEE浮点数舍入

时间:2016-06-01 06:50:22

标签: floating-point ieee-754

对于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?

1 个答案:

答案 0 :(得分:3)

Machine epsilon并不是一个定义明确的术语,因为不同的来源和语言以不同的方式定义它。

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

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

所以,在最接近标准的一轮,与偶数的关系,我们有

  • fl(x)= 1-M,1 - 3M / 2 <1。 x&lt; 1 - M / 2
  • fl(x)= 1表示1-M /2≤x≤1+ M
  • fl(x)= 1 + 2M,1 + M <1。 x&lt; 1 + 3M

因此,在第一种情况下,1 - 1e-16将舍入为1 - M,而在第二种情况下,1 + 1e-16将舍入为1