计算机能更好地保留哪个数字:`256,007` 或 `.000333`

Which number can computers retain better: `256,007` or `.000333`

我一直认为 256,007.000333.

这样的数字占用更少的 space 并且更容易出错

对于问题的上下文,在工程课程中,我们应该展示带主元的 LU 分解如何比不带主元的分解在数值上更稳定。这本书认为将最大的主元置换到位更稳定,但在我看来,最小的数字最好,这样你就不会得到小数点。

浮点数通常使用固定格式存储,即大小不变的预定格式。

最常用的格式是 IEEE-754“单精度”和“双精度”格式。前者使用三个字段来编码一个数字(或某些特殊的“值”,例如非数字值)。第一个字段是指定符号(− 或 +)的单个位 S。第二个字段是指定指数代码的八位,E。第三个字段是 23 位,包含有效位,F。代表的数字是:

  • E为0,则数为(−1)S•* 0.F2•21−127。 “0.F2”表示写“0”。后跟 F 的 23 位并将其解释为二进制数字,例如,0.11000000000000000000000 表示 ¾.
  • E为1~254,则数为(−1)•S*1.F2•2E−127.
  • E为255且F为零,则数为无穷大,(−1)S∞.
  • 如果 E 为 255 且 F 不为零,则该值为非数字 (NaN)。

如您所见,此格式始终使用 32 位表示任何数字。 256,007 的数量不多,.000333 的数量不多。此外,此格式不能表示 .000333。它能表示的最接近的是 0.00033300000359304249286651611328125.

处理这些数字时出现的错误确实取决于数字的大小。在任何操作中,结果都必须四舍五入以适合格式,而你能得到多少精确结果部分取决于指数。

关于数值分析的教科书通常是根据这些格式编写的。教科书考虑的错误类型是由这些浮点格式引起的。选择一个枢轴而不是另一个枢轴的原因与计算中的数字如何相互作用有关(不仅仅是格式本身)。

有些格式使用不同数量的内存。这些大多是“任意精度”格式,这意味着精度和用于表示数字的内存量不是预先固定的,而是根据情况进行调整。如果我们使用这样的数字,数值分析将有所不同,因为理论上,我们可以通过使用越来越多的内存使最终误差尽可能小,而不管所涉及的值的大小。换句话说,我们可以选择一个小的主元,而不是选择一个大的主元,但要求精度很高。