我应该为浮点值使用什么范围?



我知道浮点值的实现和限制-我已经阅读了你可能要链接给我的论文-但我不知道我应该为浮点值使用什么范围。

我想表示一个实数有限范围内的值。概念上,从-1到1。我可以只使用浮点值-1到1,但是我浪费尾数位了吗?

有这个问题,但是没有一个确切的答案。

浮点数的起始点是浮点数

这意味着在1附近的相对精度与在256附近的相对精度相同。对于绝大多数应用程序来说,将您的数字扩展到一个或另一个范围是没有意义的。

在非常具体、挑剔的情况下,可以有理由进行缩放。

一个是如果你需要一个大的动态范围。如果你的数字是[-1,+1],那么你最小的非零数字将是2-1074,在IEEE 754 64位二进制中。然而,它会降低精度。最小的全精度数是2-1022。这对任何正常的事情来说都足够了。如果1对应于任何可观测的物理现象(例如,可观测宇宙的质量),那么2-1022低于任何可观测的阈值(它约为10-223乘以电子的质量)。对于物理的东西来说,计算这么小的东西是没有意义的——通常只有数学家才感兴趣。如果你正在处理一些特殊的数学应用程序,那么也许你可以从将刻度从[-1,+1]更改为更大的刻度,如[-21023, +21023]中获得一些好处。(但要给自己留一些空间来进行算术运算,而不会溢出)

另一种情况是相对误差很重要,而浮点精度几乎不足以满足您的需要。表示1.1左右数字的相对误差大于表示0.9或1.9左右数字的相对误差。这是由于数字在浮点数中表示的方式,在每个指数范围内的有效位数是线性的(而不是对数的)。因此,1.1周围可用的最小增量与1.9周围可用的增量相同,但是它们在1.9中所占的比例要小于1.1。这在几乎所有的浮点使用中都无关紧要;它往往只出现在有限的情况下,如数学库,在那里必须非常仔细地评估错误,以确保软件的质量。

总结:不要担心范围。让你的浮点数浮动

相关内容

最新更新