数据类型浮点数的精度(IEEE 754 单精度)

Accuracy of data type float (IEEE 754 Single-precision)

提问人:user9564464 提问时间:11/6/2020 更新时间:11/6/2020 访问量:638

问:

我在 IEEE 754 的维基百科页面上找到了一张图表,显示了浮点精度与实际浮点值 (https://en.wikipedia.org/wiki/IEEE_754#Formats) 之间的关系:

enter image description here

将此图解释为较小的值通常比较大的值“更准确”是否正确?

在我的具体案例中,我有一个应用程序,可以计算进入浮子蓄能器/累加器的质量流量(在 0-90 克/秒的范围内)。我认为,就我首先提到的精度图而言,最好为累加器本身使用“更大的单位”,以便实际浮点值始终处于较低的范围内:这意味着在我的情况下,累加器单位使用吨而不是克。

这种考虑是否正确,或者使用以克或吨为单位的浮点累加器没有好处?

浮点 浮点精度 IEEE-754

评论

1赞 Eric Postpischil 11/6/2020
有一种方法可以操纵浮点数以获得更高的相对精度,那就是将有效数安排得更高。例如,对于 [1, 2] 中的数字,对于 IEEE-754 二进制 32 数字,最小精度单位(ULP,浮点数中可以进行的最小更改,因为它是相邻可表示数字之间的距离)为 2^−23。因此,对于 1.1 附近的数字,相对误差为 2^−23/1.1,约为 1.084e−7。如果我们将测量单位调整为数字在 1.9 左右,则相对误差为 2^−23/1.9,约为 0.627e−7...
1赞 Eric Postpischil 11/6/2020
...但是,对于浮点运算的大多数用途来说,这是不切实际的。常见用途包括执行各种操作,其中有效数在实践中是不可预测的。它可能偶尔在特殊用途代码中有用。

答:

3赞 Sneftel 11/6/2020 #1

对该图的正确解释是精度与大小有关。

假设您的数字约为 100(因为您以克为单位)。这意味着您的精度约为 1e-5 克(这大约是一小粒沙子的质量。

现在假设你以太阳质量为单位进行测量。现在你的数字是 5e-32 太阳质量。相对精度现在约为5e-37太阳质量。这大约是一小粒沙子的质量。

所以不,没有好处。浮点数的意义在于让您不必担心大小。

如果您担心对许多数字求和的整体准确性,请使用 Kahan 求和

评论

0赞 user9564464 11/6/2020
你的话很有道理,非常感谢你的解释!我想我的问题是我假设,精度不是恒定的,而是在范围内变化的,但由于图表只显示两条直线,这种考虑是错误的......