【发布时间】:2019-06-03 18:42:58
【问题描述】:
以下计算有问题:
>>> print(float('32.31') * 1e9)
32310000000.000004
我需要这个结果是32310000000.0(没有错误的小数位)。直接使用浮点数时也会出现这种情况:
>>> print(32.31 * 1e9)
32310000000.000004
有没有办法避免错误的小数位?分析字符串并舍入到小数位数不是首选解决方案。
非常感谢。
注意:以下工作正常:
>>> print(32.32 * 1e9)
32320000000.0
所以我很高兴在测试过程中发现了上述问题。
编辑:感谢您的快速回答!对不起,我错过了一个重要的点。当结果小于一时,该方法也必须有效,例如:
32.31 * 1e-9
...在这种情况下我不能使用round(32.31 * 1e-9, 1)
【问题讨论】:
标签: python string floating-point decimal