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

  • 时间:
  • 浏览:0

而且认为这是 Python中的俩个多 bug。人太好有的是俩个多多。这与 Python 关系不大,而与底层平台咋样避免浮点数字关系更大。

很多还后能 轻松地用十进制表示的数字还后能 用二进制浮点表示。类似于,随后:

CPython 中的 float 类型使用C语言的 double 类型进行存储。 float 对象的值是以固定的精度(通常为 53 位)存储的二进制浮点数,肯能 Python 使用 C 操作,而后者依赖于避免器中的硬件实现来执行浮点运算。 这原因分析分析就浮点运算而言,Python 的行为类似于于很多流行的语言,包括 C 和 Java。

1.0050505050505050505050505011 (binary)

确切地说:

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

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

用户总是 对俩个多多的结果感到惊讶:

1.1999999999999999555910790149937383850547332763671875 (decimal)

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