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

2 投票
3 回答
637 浏览
提问于 2025-04-17 04:49

我有一个字符串:

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')

撰写回答