Python 小數精度問題(0.09999999999999998)

現象

>>> 33/22
1.5
>>> 3.3/2.2
1.4999999999999998
>>> 1-0.1
0.9
>>> 1-0.9
0.09999999999999998

緣由

  • 大多數的十進制小數都不能精確地表示爲二進制小數
  • 就像十進制小數沒法精確的表示 1/3
  • 官方文檔對此有專門論述: 浮點算術的爭議與限制

解決方案

>>> from decimal import Decimal
>>> print(Decimal('3.3')/Decimal('2.2'))
1.5
>>> print(Decimal('1')-Decimal('0.9'))
0.1
本文出自 qbit snap
相關文章
相關標籤/搜索