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

San*_*r A 24 python string floating-point decimal

我有一个python列表,其中包含以下格式的字符串:

A1 = [' "29.0" ',' "65.2" ',' "75.2" ']
Run Code Online (Sandbox Code Playgroud)

如何将这些字符串转换为十进制数以对列表元素执行算术运算?

Mar*_*ers 54

如果要将结果作为最近的二进制浮点数使用float:

result = [float(x.strip(' "')) for x in A1]
Run Code Online (Sandbox Code Playgroud)

如果您希望存储的结果完全使用Decimal而不是float:

from decimal import Decimal
result = [Decimal(x.strip(' "')) for x in A1]
Run Code Online (Sandbox Code Playgroud)


Nid*_*wal 18

如果您将价格(以字符串形式)转换为十进制价格,那么....

from decimal import Decimal

price = "14000,45"
price_in_decimal = Decimal(price.replace(',','.'))
Run Code Online (Sandbox Code Playgroud)

如果您的字符串已经使用点作为小数点分隔符,则无需替换


Mar*_*rty 5

Python 有两种浮点数据类型FloatDecimal。用例取决于您希望在程序中使用的小数精度。Float快速且Decimal准确。

\n

要将字符串转换为浮点数,只需执行以下操作

\n
import decimal\nfloat('1.2')\ndecimal.Decimal('1.2')\n
Run Code Online (Sandbox Code Playgroud)\n

分析FloatDecimal对象

\n
>>> import sys\n>>> from decimal import Decimal\n\n>>> num = '1.2'\n\n>>> float(num)\n1.2\n\n>>> Decimal(num)\nDecimal('1.2')\n\n\n>>> # Precision\n>>> float(1.2)\n1.2\n\n>>> Decimal(1.2)\nDecimal('1.1999999999999999555910790149937383830547332763671875')\n\n\n>>> # Memory usage\n>>> sys.getsizeof(Decimal(num))\n104\n\n>>> sys.getsizeof(float(num))\n24\n\n\n>>> # Performance\n>>> %timeit float(num)\n140 ns \xc2\xb1 2.27 ns per loop (mean \xc2\xb1 std. dev. of 7 runs, 10000000 loops each)\n\n>>> %timeit Decimal(num)\n192 ns \xc2\xb1 9.42 ns per loop (mean \xc2\xb1 std. dev. of 7 runs, 1000000 loops each)\n
Run Code Online (Sandbox Code Playgroud)\n

在您的特定情况下,您可以使用@Mark Byers 解决方案。

\n