如何解决替换python中的小浮点数
对于误差函数,我计算的是绝对误差,即 abs(should-simulated)
。
但是,不幸的是,我的 simulated
值可能非常小,例如 1e-38。当我尝试从 should
中减去它们时,输出等于 should
,因为这些值对于 Python 来说太小了。为了防止这种情况,我采用了 should
和 simulated
的对数,但是,这会使误差非线性,这不符合我的目的。我尝试使用 decimal
包,但即使这样也不适用于这么小的数字。
有没有办法不用对数或小数来计算小值的减法?
解决方法
decimal
包可以处理任意用户定义的精度。您可以使用 decimal.getcontext().prec
获得默认精度,并且也设置此值以获得更好的精度。在我的机器上,默认情况下它是 28,这不是很大,但对于大多数情况来说已经足够了。如果您想要非常精确的精度,可以将其设置为 300 之类的大值,但 50 应该已经足够清楚了。请注意,1e-42 的相对精度是整个可观测宇宙的原子核之一。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。