以下代码段的结果为6:

import math
number = (1 - 0.99) * 500
math.ceil(number)


而(数学上的)正确答案将是5。大概这是一个四舍五入的问题-实施正确解决方案的最佳方法是什么?

最佳答案

大概这是一个四舍五入的问题


是:

>>> 1 - 0.99
0.010000000000000009
>>> (1 - 0.99) * 500
5.000000000000004



  实施正确解决方案的最佳方法是什么?


您可以使用decimal.Decimal代替float

>>> from decimal import Decimal
>>> import math
>>> (1 - Decimal("0.99")) * 500
Decimal('5.00')
>>> math.ceil((1 - Decimal("0.99")) * 500)
5.0

10-07 19:00
查看更多