在Python中将字符串转换为数字
我有一个字符串:
x = "12.000"
我想把它转换成数字。不过,我试过用整数(int)、浮点数(float)等方法,但最后得到的结果只有 12.0
,我想保留所有的零。请帮帮我!
我想要的结果是 x = 12.000
。
3 个回答
0
你可能会对Python的decimal库感兴趣。
你可以通过getcontext().prec
来设置精度。
2
如果你想进行考虑精度的计算,最简单的方法可能就是使用uncertainties模块。下面是一个例子:
>>> import uncertainties
>>> x = uncertainties.ufloat('12.000')
>>> x
12.0+/-0.001
>>> print 2*x
24.0+/-0.002
uncertainties模块可以自动处理不确定性(也就是精度),无论你用的数学表达式有多复杂。
而decimal模块则不处理不确定性,它只是设置小数点后面的位数:你不能完全信任decimal模块给出的所有数字。因此,
>>> 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
所以,decimal模块给出的结果是'1210.0',尽管100*(12.1±0.1)的精度比0.1大100倍。
所以,如果你需要小数点后有固定位数的数字(比如做账时),那么decimal模块是个不错的选择;但如果你需要进行带有不确定性的计算,那么uncertainties模块更合适。
(免责声明:我是uncertainties模块的作者。)
6
decimal.Decimal
让你可以使用特定的精度。
>>> decimal.Decimal('12.000')
Decimal('12.000')