6

我的代码:

a = '2.3'

我想显示a为浮点值。

由于a是一个字符串,我尝试了:

float(a)

我得到的结果是:

2.2999999999999998

我想要这个问题的解决方案。请帮助我。

我正在关注本教程

4

3 回答 3

18

我认为它更多地反映了您对浮点类型的理解,而不是 Python。有关这种“不准确”背后的原因,请参阅我关于浮点数的文章(基于 .NET,但仍然相关)。如果你需要保持精确的十进制表示,你应该使用十进制模块

于 2009-01-02T09:22:15.433 回答
6

这不是 python 的缺点,而是浮点数在计算机上存储方式的缺点。无论实现语言如何,您都会发现类似的问题。

你说你想'显示' A 作为一个浮点数,为什么不只显示字符串呢?从视觉上看,它将与您的期望相同。

正如乔恩所提到的,如果您的需求不仅仅是“显示”浮点数,您应该使用十进制模块来存储精确的表示。

于 2009-01-02T09:27:15.783 回答
4

解释原因的优秀答案。我只想从标准库中添加一个可能的实用解决方案:

>>> from decimal import Decimal
>>> a = Decimal('2.3')
>>> print a
2.3

这实际上是 Python 的(非常)常见问题解答,您可以在此处阅读答案


编辑:我刚刚注意到 John Skeet 已经提到了这一点。那好吧...

于 2009-01-02T16:43:44.910 回答