有人说 double 浮点数的机器 epsilon 是 2^-53,其他人(更常见)说它的 2^-52。我已经使用 1 以外的整数估计机器精度并且从上到下(在 matlab 中),并且已经得到了这两个值作为结果。为什么在实践中可以观察到这两个值?我认为它应该总是在 2^-52 左右产生一个 epsilon。
最佳答案
术语“机器 epsilon”存在固有的歧义,因此为了解决这个问题,通常将其定义为 1
之间的差异。和下一个更大的可表示数字。 (这个数字实际上(并非偶然)是通过将二进制表示逐字增加 1 获得的。)
IEEE754 64 位浮点数有 52 个显式尾数位,因此 53 个包括隐式前导 1
.所以这两个连续的数字是:
1.0000 ..... 0000
1.0000 ..... 0001
\-- 52 digits --/
所以两者之间的差异是2-52。
关于floating-point - 机器精度估计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7995315/