5

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

  1. 设置一个浮点数为 2147483647。你会看到它的值实际上是 2147483648
  2. 从浮点数中减去64,你会看到操作是正确的
  3. 从浮点数中减去 65,你会看到你现在实际上有 2147483520,这意味着它实际上减去了 128。

那么当有 10 位有效数字时,为什么是 128 呢?我了解浮点数是如何存储的(1 位用于符号,8 位用于指数,23 位用于尾数)并且了解如果您假设所有整数都会自动找到浮点数据结构中的确切位置,您将如何失去精度,但我不知道不明白 128 是从哪里来的。我的直觉告诉我,我走在正确的轨道上,但我希望有人能够为我解决这个问题。

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

谢谢!

4

2 回答 2

4

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

于 2011-08-10T04:24:59.460 回答
3

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

于 2011-08-10T20:08:25.167 回答