将字符串转换为数字的简单方法是什么:
来自:
['3.65e+03', '1.14e+04', '1.35e+04', '1.46e+04']
到:
[3.65e+03, 1.14e+04, 1.35e+04, 1.46e+04]
谢谢。
请您参考如下方法:
首先,我希望您知道 limitations在我们当前的架构中准确表示 float 。
转换的简单方法就是这样。
>>> s = ['3.65e+03', '1.14e+04', '1.35e+04', '1.46e+04']
>>> map(float,s)
>>> [3650.0, 11400.0, 13500.0, 14600.0]
但是 float 会将它们四舍五入为最接近的值,只要值相同,它的表示形式并不重要。有时,这些值可以具有接近相等的表示,例如具有相同的值(几乎)
>>> s = ['3.65e+93', '1.14e+04', '1.35e+04', '1.46e+04']
>>> map(float,s)
[3.6500000000000001e+93, 11400.0, 13500.0, 14600.0]
更新 - 请参阅 John Machin 对此行为/报告的评论。
但是如果你想要精确的表示,例如如果您正在处理涉及金钱的计算,那么您可能希望使用 Decimal 类型而不是 float,对于所有目的,它的行为方式与您的 float 相同。
>>> from decimal import Decimal
>>> map(Decimal,s)
[Decimal('3.65E+93'), Decimal('1.14E+4'), Decimal('1.35E+4'), Decimal('1.46E+4')]
