浮点限制

我的代码:

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已经提到这一点。 好吧…