如何检查两个金额相乘的结果是否等于某个总金额或取几美分。例如:5.57 * 2.92 = 16.2644和3.25 * 5 = 16.25。 我每次增加第一笔金额是0.01,试图找到最接近总金额,第二金额不变。
答案 0 :(得分:3)
如果您使用Python(或任何编程语言)进行财务类型计算,则不要使用浮点数(http://en.wikipedia.org/wiki/Floating_point#Accuracy_problems)。
相反,请务必至少使用decimal
模块,它将为您提供任意精度的十进制数(http://docs.python.org/2/library/decimal.html)。
至于你的实际问题:
from decimal import Decimal
r1 = Decimal("5.57") * Decimal("2.92")
r2 = Decimal("3.25") * Decimal("5")
epsilon = Decimal("0.01")
if abs(r1 - r2) <= epsilon:
print "Almost equal!"
答案 1 :(得分:2)
十进制是好的。
但要比较公差范围内的两个浮点数:
tolerance = 0.04
if abs(number1 - number2) < tolerance:
print('the numbers are close')