我有一个简单的字符串,我想在不丢失任何可见信息的情况下将其读入 float ,如下所示:
s = ' 1.0000\n'
当我执行 f = float(s) 时,我得到 f=1.0
如何欺骗它以获得 f=1.0000 ?
谢谢
请您参考如下方法:
直接回答:你不能。根据设计, float 是不精确的。虽然 python 的 float 具有足够的精度来表示 1.0000,但它们永远不会表示“1-point-zero-zero-zero-zero”。很有可能,这正是您所需要的。如果您需要显示四位十进制数字,您始终可以使用字符串格式。
print '%.3f' % float(1.0000)
间接答案:使用decimal模块。
from decimal import Decimal
d = Decimal('1.0000')
decimal 包旨在以任意精度处理所有这些问题。小数“1.0000”正好 1.0000,不多也不少。但是请注意,舍入的复杂性意味着您不能将 float 直接转换为 Decimal;您必须将字符串(或整数)传递给构造函数。
