我有一个程序可以处理很多非常小的数字(朝向Double限制的下端)。
在我的应用程序执行期间,这些数字中的一些逐渐变小,这意味着它们的“估计”不太准确。
我现在的解决方案是在进行任何计算之前将其缩小,然后再将其缩小?
......但它让我思考,我实际上通过这样做获得了更多的“准确性”吗?
思想?
答案 0 :(得分:0)
你的数字是否真的在10 ^ -308(最小标准化双倍)和10 ^ -324(最小可表示双重,非规范化,即失去精度)之间的区域?如果是这样,那么通过缩放它们确实可以通过在double类型的指数范围的极限范围内工作来获得准确性。
我不得不怀疑:什么样的应用程序处理极小的数字?我知道没有任何需要这样的物理训练。
答案 1 :(得分:0)
double有固定数量的有效数字,另有固定数量的字节表示“power”-part。
事实上,您可能有两个问题:
关于力量部分:即接近小双打的极限即是。 按比例缩放它们(以2为幂)有助于避免您的数字变得不再具有代表性。
当你写下“估计”的准确性时,我假设你参考有效位数:这与小数限制无关。从双精度的下限意义上来说,数字非常小,但不是太小,具有与任何“更正常”数字相同的有效位数。 一般来说,对数字的数值精度的关注应该集中在如何计算数字,而不是结果的绝对大小。