【发布时间】:2018-08-12 02:16:32
【问题描述】:
我有一个字符串需要转换为浮点数才能处理。
num = "2.769999999999999574e+00"
如果我做一个浮点操作,精度就没有了
print(float(num)) # 2.7699999999999996
如果我使用 Decimal 类,即使这样精度也没有了
from decimal import Decimal
print(Decimal(num)) # 2.769999999999999574
如果提供的数字首先是浮点数,Decimal 似乎只能保留精度
print(Decimal(2.769999999999999574e+00)) # 2.769999999999999573674358543939888477325439453125
如何在将数字从字符串转换为浮点数时保持精度?
【问题讨论】:
-
您所说的“精度消失了”是什么意思?您将数字
2.769999999999999574转换为十进制并得到2.769999999999999574。你期待什么? -
@user202729 更新了代码。这里 2.769999999999999574e+00 是一个非常大的数字,我想尽可能地保持它的大小,我可以保持 'e' 符号。目前只有十进制能够给出我是一个非常大的数字,但只有当给定的数字不是字符串时。
-
你确定吗?指数为 e00。
-
@cᴏʟᴅsᴘᴇᴇᴅ 我只以其中一个数字为例。有带e02的数字等等。
标签: python-3.x precision