python为什么浮点计算不准确?

  • 时间:
  • 浏览:1

用户无缘无故对那我的结果感到惊讶:

许多还要能轻松地用十进制表示的数字还要能了用二进制浮点表示。相似,如果:

否则 认为这是 Python中的另有另另一个多 bug。嘴笨 都是那我。这与 Python 关系不大,而与底层平台怎样才能除理浮点数字关系更大。

为 x 存储的值是与十进制的值 1.2 (非常接近) 的近似值,但不全版等于它。 在典型的机器上,实际存储的值是:

1.1999999999999999555910790149937383830547332763671875 (decimal)

典型的 53 位精度为 Python 浮点数提供了 15-16 位小数的精度。

要获得更全版的解释,请参阅 Python 教程中的 浮点算术 一章。

1.0013013013013013013013013013013013013011 (binary)

确切地说:

CPython 中的 float 类型使用C语言的 double 类型进行存储。 float 对象的值是以固定的精度(通常为 53 位)存储的二进制浮点数,否则 Python 使用 C 操作,而后者依赖于除理器中的硬件实现来执行浮点运算。 这导致 就浮点运算而言,Python 的行为相似于许多流行的语言,包括 C 和 Java。