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

时间:2013-01-01 17:47:32

标签: floating-point

我知道浮点值的实现和限制 - 我已经阅读了你可能要将我链接到的论文 - 但我无法弄清楚我应该使用什么范围的浮点值。

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

this question,但确实没有确定的答案。

1 个答案:

答案 0 :(得分:4)

浮点的主要点是浮点数。

这意味着您在256附近的相对精度与1相同。对于绝大多数应用程序而言,将数字缩放到一个范围内是没有意义的。

在非常具体,挑剔的情况下,可能有理由进行扩展。

一个是你需要一个巨大的动态范围。如果您的数字在[-1,+ 1]中,那么您的最小非零数字将是2 -1074 ,在IEEE 754 64位二进制数中。但是,它会降低精度。具有完全精度的最小数字将是2 -1022 。对于任何正常的事情都是如此。如果1对应于任何可观察的物理现象(例如,可观察宇宙的质量),那么2 -1022 低于任何可观察的阈值(大约10 -223 次电子的质量)。计算任何对物质事物来说都很小的东西毫无意义 - 通常只对数学家感兴趣。如果你正在使用一些特殊的数学应用,那么也许你可以从[-1,+ 1]改变你的规模到更大的东西,比如[-2 1023 ,+ 2 < SUP> 1023 ]。 (但是给自己留一些算术空间而不会溢出。)

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

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