Python 如何对数字进行四舍五入以修正不确定性?

Python 如何对数字进行四舍五入以修正不确定性?,python,significant-digits,uncertainty,Python,Significant Digits,Uncertainty,在python中,我有一个数字:U=0.02462631224438585+-3.350971888120506e-06 由于不确定性被四舍五入到1s.f.,如何将其四舍五入到正确的有效数字? 有没有一种简单的方法可以使用numpy?或scipy或内置函数是否最适合此功能 我尝试过使用设置打印选项(精度=3),但这不起作用。 我也尝试过使用round(number,signitive-len(str(number))),但这似乎有些冗长 我确信我在几年前使用过一个函数,而不必创建自己的函数 最终

在python中,我有一个数字:
U=0.02462631224438585+-3.350971888120506e-06

由于不确定性被四舍五入到1s.f.,如何将其四舍五入到正确的有效数字? 有没有一种简单的方法可以使用
numpy
?或
scipy
或内置函数是否最适合此功能

我尝试过使用
设置打印选项(精度=3)
,但这不起作用。 我也尝试过使用
round(number,signitive-len(str(number)))
,但这似乎有些冗长

我确信我在几年前使用过一个函数,而不必创建自己的函数

最终数字应为
U=2.4626e-02+-3e-06

或者
U=(2.4626+-3e-4)e-02

模块具有计算有效位数的能力

import uncertainties
a = uncertainties.ufloat(0.02462631224438585, 3.350971888120506e-06)
print(a)
# 0.0246263+/-0.0000034
defaut是两个有效数字,但是有一个
格式
键用于控制输出

print('{:.1u}, {:.3uf}, {:.2uL}, {:0.2ue}'.format(a,a,a,a))
# 0.024626+/-0.000003, 0.02462631+/-0.00000335, 0.0246263 \pm 0.0000034, (2.46263+/-0.00034)e-02

你的意思是你希望它以这种方式打印,同时保留最初存储在数据中的值,还是你真的想截断变量?在我的手机上,所以我不能给出完整的答案,但你应该看看软件包。它支持精确的浮点运算和精确的舍入。我把它放到字典里,但我正在评估不确定性,所以它必须是实际变化的变量