floating-point - 机器精度估计

标签 floating-point floating-point-precision epsilon

有人说 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/

相关文章:

比较 C 中的 float

c - 如何将信号 NaN 转换为安静 NaN?

python - 精度,为什么 Matlab 和 Python numpy 给出如此不同的输出?

c - 我的 for 循环添加了 +1 多余的内容,我不知道为什么

c - 使用 C11 和 GNU11 编译器标志的机器 epsilon 计算是不同的

r - R中非常小数的算术

c++ - 使用和不使用 opt.flag -O3 (C++/C) 的浮点除法速度不同的原因

c++ - 为什么显示vector<long double>时看不到所有有效数字?

c++ - 如何计算网格指数

c - 确定浮点变量的当前精度/epsilon