在Python中将字符串转换为数字

时间:2011-10-22 16:44:52

标签: python

我有一个字符串:

x = "12.000"

我希望它将其转换为数字。但是,我使用了int,float和其他,但我只得到12.0,我想保留所有的零。请帮忙!

我希望x = 12.000为结果。

3 个答案:

答案 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设置精度。