1

现象

>>> 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

qbit
268 声望279 粉丝