检查两个金额的总和是否等于某个公差的总和

时间:2014-01-20 00:07:27

标签: python math

如何检查两个金额相乘的结果是否等于某个总金额或取几美分。例如:5.57 * 2.92 = 16.2644和3.25 * 5 = 16.25。 我每次增加第一笔金额是0.01,试图找到最接近总金额,第二金额不变。

2 个答案:

答案 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')