浮点数中有效位数和精度损失之间的关系是什么?

时间:2011-08-10 04:17:10

标签: floating-point floating-point-precision

所以我一直试图围绕浮点数中有效数字的数量与相对精度损失之间的关系进行包装,但我似乎无法理解它。我之前正在阅读一篇文章说要做以下事情:

  1. 将浮点数设置为值2147483647.您将看到其值实际为2147483648
  2. 从浮动中减去64,您将看到操作正确
  3. 从浮点数中减去65,您会看到实际上现在有2147483520,这意味着它实际上减去了128.
  4. 那么为什么这个128有10位有效数字?我理解如何存储浮点数(符号为1位,指数为8位,尾数为23位)并且如果假设所有整数将自动在浮点数据结构中找到确切的住宅,则了解如何丢失精度,但我不知道了解128来自哪里。我的直觉告诉我,我正走在正确的轨道上,但我希望有人可以为我解决这个问题。

    我最初认为可能的浮点数之间的距离是2 ^(n-1),其中n是有效位数,但这并不成立。

    谢谢!

2 个答案:

答案 0 :(得分:4)

两个浮点数之间的距离取决于指数。指数越小,差异越小 在一个浮点数和下一个浮点数之间。接下来要考虑的是指数存储在浮点数中 是二进制指数,而不是十进制指数,因此在浮点数的情况下,小数精度不如二进制 精度的数字。 this document的图9.1很好地解释了这个概念。

答案 1 :(得分:3)

两个相邻浮点数之间的“距离”是 2 ^(1-n + e),其中 e 是真指数而 n < / em>尾数中的位数(AKA有效数)。存储的指数不是真指数,它有偏差。对于IEEE-754浮点数,这是 127 (对于标准化数字)。因此,正如Peter O所说,距离取决于指数。