乘法浮点数的精度

M. *_*ope 4 floating-point precision double

对浮点数和双精度数执行运算(如乘法、除法、加法和减法)是否保持其精度?

例如,如果我将 1000 个浮点数相乘(或相除、相加、相减),我还能保持 7 位精度吗?

我在这个网站上读到保持精度(http://floating-point-gui.de/formats/fp/),但我想仔细检查一下。

use*_*109 5

有精度,也有准确度。a 的精度float始终相同。但是计算的准确性取决于各种特定于实现的细节。

例如,如果每次计算都引入了半个 LSB 的错误,那么在 1000 次计算之后,结果可能会偏离 500 个 LSB。因此,尽管答案将精确到 7 位,但它只能精确到 4 位。

  • “在最坏的情况下,每次计算都会引入半 LSB 的误差,因此在 1000 次计算之后,您的结果可能会偏离 500 LSB。” - 考虑到诸如“1 LSB”在每次计算中的数量不同等因素,这是一个非常具有误导性的陈述。例如,`1e20 + 14 - 1e20` 通常精确到 0 位,尽管只涉及两个操作的舍入误差。 (3认同)
  • 最坏情况错误是一回事,错误概率密度是另一回事。对于乘法的情况,请参阅 http://stackoverflow.com/questions/12047410/the-number-of-correct-decimal-digits-in-a-product-of-doubles-with-a-large-number/12052359#12052359 (2认同)