Python: 将字符串转换为十进制数

75 投票
8 回答
273317 浏览
提问于 2025-04-16 09:41

我有一个包含字符串的Python列表,格式如下:

A1 = [' "29.0" ',' "65.2" ',' "75.2" ']

我该如何把这些字符串转换成十进制数字,以便对列表中的元素进行数学运算呢?

8 个回答

5

在Python中,有两种浮点数类型,分别是 FloatDecimal。你选择哪种类型,主要看你需要多精确的小数。Float 计算速度快,而 Decimal 则更精确。

如果你想把一个字符串转换成浮点数,只需要这样做:

import decimal
float('1.2')
decimal.Decimal('1.2')

分析 FloatDecimal 对象

>>> import sys
>>> from decimal import Decimal

>>> num = '1.2'

>>> float(num)
1.2

>>> Decimal(num)
Decimal('1.2')


>>> # Precision
>>> float(1.2)
1.2

>>> Decimal(1.2)
Decimal('1.1999999999999999555910790149937383830547332763671875')


>>> # Memory usage
>>> sys.getsizeof(Decimal(num))
104

>>> sys.getsizeof(float(num))
24


>>> # Performance
>>> %timeit float(num)
140 ns ± 2.27 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)

>>> %timeit Decimal(num)
192 ns ± 9.42 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)

在你的具体情况下,可以使用 @Mark Byers 的解决方案。

24

如果你要把价格(以字符串形式表示)转换成小数价格的话……

from decimal import Decimal

price = "14000,45"
price_in_decimal = Decimal(price.replace(',','.'))

如果你的字符串已经用点号作为小数分隔符,那就不需要进行替换了。

107

如果你想要得到最接近的二进制浮点数结果,可以使用 float

result = [float(x.strip(' "')) for x in A1]

如果你想要精确存储结果,可以用 Decimal 来代替 float

from decimal import Decimal
result = [Decimal(x.strip(' "')) for x in A1]

撰写回答