小编Joh*_*ohn的帖子

获得"大"错误似乎太大而不能单独舍入

当我使用Python时,我得到一些重要的舍入错误,这些错误对于简单的浮点问题来说似乎太大了.我有以下变量:

p = 2.2*10**9
m = 0.510999*10**6
Run Code Online (Sandbox Code Playgroud)

然后我通过以下内容发送它:

b = 1/np.sqrt((m/p)**2 + 1) = 0.99999997302479693
Run Code Online (Sandbox Code Playgroud)

然后我通过另一个应该返回p的等式使用这个值:

p = (1/np.sqrt(1-b**2)) * m * b = 2200000008.1937...
Run Code Online (Sandbox Code Playgroud)

前面提到的p的差异为8.19 ...(如果使用科学记数法,则在小数点后第9位误差),这似乎太大而不仅仅是舍入问题.

我尝试使用Decimal().sqrt()任意高精度的所有计算,我得到的差值为1.8935 ......,这只是稍微好一些.

有更好的方法来获得更高的精度吗?

python math numpy rounding python-3.x

2
推荐指数
1
解决办法
85
查看次数

标签 统计

math ×1

numpy ×1

python ×1

python-3.x ×1

rounding ×1