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

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

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

这样解释这张图是否正确,较小的值通常比较大的值“更准确”?

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

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

图表的正确解释是精度与量级有关。

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

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

所以不,没有好处。浮点数的意义在于让你不用担心量级。

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