机器精度估算

use*_*261 4 floating-point epsilon floating-point-precision

有人说双精度浮点数的机器epsilon是2 ^ -53,而其他(更常见的)是2 ^ -52.我已经使用除了1之外的整数以及从上方和下方(在matlab中)进行估算来估计机器精度,并且已经获得两个值作为结果.为什么在实践中可以观察到这两个值?我认为应该总是在2 ^ -52左右产生一个epsilon.

Ker*_* SB 7

关于术语"机器epsilon"存在固有的模糊性,因此为了解决这个问题,通常将其定义为1下一个更大的可表示数字之间的差异.(这个数字实际上(并非偶然)通过逐字递增二进制表示获得.)

IEEE754 64位浮点数有52个显式尾数位,因此53包含隐式前导1.所以两个连续的数字是:

1.0000  .....  0000
1.0000  .....  0001
  \-- 52 digits --/
Run Code Online (Sandbox Code Playgroud)

所以两者之间的差异是2-52.