我知道浮点值的实现和限制——我已经阅读了你可能要链接到我的论文——但我不知道我应该为浮点值使用什么范围。
我想在一个真实的、有限的范围内表示一个值。从概念上讲,-1 到 1。我可以只使用浮点值 -1 到 1,但是我是否在浪费尾数位?
有这个问题,但没有真正的决定性答案。
我知道浮点值的实现和限制——我已经阅读了你可能要链接到我的论文——但我不知道我应该为浮点值使用什么范围。
我想在一个真实的、有限的范围内表示一个值。从概念上讲,-1 到 1。我可以只使用浮点值 -1 到 1,但是我是否在浪费尾数位?
有这个问题,但没有真正的决定性答案。
浮点的主要点是点浮动。
这意味着您在 1 附近的相对精度与在 256 附近的相对精度相同。对于绝大多数应用程序,将数字缩放到一个或另一个范围内是没有意义的。
在非常具体、挑剔的情况下,可能有理由进行扩展。
一个是如果您需要巨大的动态范围。如果您的数字在 [-1, +1] 中,那么您最小的非零数字将是 2 -1074,在 IEEE 754 64 位二进制中。但是,它会降低精度。具有全精度的最小数字将是 2 -1022。这对于任何正常的事情来说都足够了。如果 1 对应于任何可观测的物理现象(例如,可观测宇宙的质量),那么 2 -1022低于任何可观测的阈值(大约是 10 -223电子质量的倍数)。计算任何对物理事物来说很小的东西根本没有意义——它通常只对数学家感兴趣。如果您正在处理一些特殊的数学应用程序,那么也许您可以从将比例从 [-1, +1] 更改为更大的值(例如 [-2 1023 , +2 1023 ])中获得一些好处。(但给自己留一些算术空间,不要溢出。)
另一种情况是相对误差很重要,浮点精度几乎不能满足您的需求。表示 1.1 左右的数字的相对误差大于表示 0.9 或 1.9 左右的数字的相对误差。这是由于数字以浮点表示的方式,在每个指数范围内都有一个线性(而不是对数)的有效数字。因此,1.1 左右可用的最小增量与 1.9 左右可用的增量相同,但它们是 1.9 的一小部分,而不是 1.1。这在几乎所有的浮点使用中都无关紧要。它往往只出现在有限的情况下,例如必须对错误进行非常仔细的评估以确保质量软件的数学库。
总结:不用担心范围。让你的浮点数浮动。