浮点限制

我的代码:

a = '2.3' 

我想显示一个浮点值。

由于a是一个string,我试过:

 float(a) 

我得到的结果是:

 2.2999999999999998 

我想要解决这个问题。 请,请帮助我。

我正在按照这个教程 。

3 Solutions collect form web for “浮点限制”

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

这不是python的缺点,相反,它是浮点数存储在计算机上的一个缺点。 无论实施语言如何,您都会发现类似的问题。

你说你想把A显示为一个浮点,为什么不显示这个string呢? 从视觉上来看,它与你期望的相同。

正如Jon所说,如果你的需求不仅仅是“显示”浮点数,你应该使用十进制模块来存储确切的表示。

出色的答案解释原因。 我只是想从标准库中添加一个可能的实用解决scheme:

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

这实际上是Python的(非常)FAQ,你可以在这里阅读答案 。


编辑:我只注意到,约翰Skeet已经提到这一点。 好吧…

  • 这是什么意思?
  • Django模型字段默认基于在同一模型中的另一个字段
  • 获取Python函数内的参数名称列表
  • 将pandas数据框转换为numpy数组,保留索引
  • 如何有效地使用MySQLDB的SScursor?
  • 将列表分成大致相等长度的N个部分
  • Django - 在设置中使用反向URL映射
  • 在Python中释放内存
  • 当我使用os.system()或subprocess.call()时如何隐藏控制台?
  • Cython能编译成EXE吗?
  • 如何创build一个等于15分钟前的DateTime?