以下代码段的结果为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