浮点限制
我的代码:
a = '2.3'
我想显示一个浮点值。
由于a
是一个string,我试过:
float(a)
我得到的结果是:
2.2999999999999998
我想要解决这个问题。 请,请帮助我。
我正在按照这个教程 。
我认为它更多地反映了你对浮点types的理解,而不是对Python的理解。 看到我关于浮点数 (基于.NET,但仍然相关)的文章,因为这个“不准确”背后的原因。 如果你需要保留精确的十进制表示,你应该使用十进制模块 。
这不是python的缺点,相反,它是浮点数存储在计算机上的一个缺点。 无论实施语言如何,您都会发现类似的问题。
你说你想把A显示为一个浮点,为什么不显示这个string呢? 从视觉上来看,它与你期望的相同。
正如Jon所说,如果你的需求不仅仅是“显示”浮点数,你应该使用十进制模块来存储确切的表示。
出色的答案解释原因。 我只是想从标准库中添加一个可能的实用解决scheme:
>>> from decimal import Decimal >>> a = Decimal('2.3') >>> print a 2.3
这实际上是Python的(非常)FAQ,你可以在这里阅读答案 。
编辑:我只注意到,约翰Skeet已经提到这一点。 好吧…