我有一个字符串:
x = "12.000"
我希望它将其转换为数字。但是,我使用了int,float和其他,但我只得到12.0
,我想保留所有的零。请帮忙!
我希望x = 12.000
为结果。
答案 0 :(得分:6)
decimal.Decimal
允许您使用特定的精度。
>>> decimal.Decimal('12.000')
Decimal('12.000')
答案 1 :(得分:2)
如果您真的想要执行计算以考虑精确度,最简单的方法是使用uncertainties模块。这是一个例子
>>> import uncertainties
>>> x = uncertainties.ufloat('12.000')
>>> x
12.0+/-0.001
>>> print 2*x
24.0+/-0.002
uncertainties模块可以透明地处理不确定性(精度),无论所涉及的数学表达式的复杂程度如何。
另一方面,decimal模块不处理不确定性,而是设置小数点后的位数:您不能信任小数模块给出的所有数字< / strong>即可。因此,
>>> 100*decimal.Decimal('12.1')
Decimal('1210.0')
而100 *(12.1±0.1)= 1210±10(不是1210.0±0.1):
>>> 100*uncertainties.ufloat('12.1')
1210.0+/-10.0
因此,十进制模块给出'1210.0',即使100 *(12.1±0.1)的精度比0.1大100倍。
因此,如果您想要在小数点后面具有固定位数的数字(如会计应用程序),则十进制模块是好的;如果您需要执行具有不确定性的计算,则uncertainties模块是合适的。
(免责声明:我是不确定因素模块的作者。)
答案 2 :(得分:0)
您可能会对the decimal python lib感兴趣。
您可以使用getcontext().prec
设置精度。