我当时正在从事一个项目,如果我不得不编写一个代码来计算客户退休时的储蓄:
def savings_calculator(PMT, n, i):
FV = 0
for j in range(n):
interest = FV * i
FV = FV + interest
FV = FV + PMT
FV = round(FV,2)
return FV
问题是一旦我完成FV,我有时会得到错误的值
下面的测试用例应该返回true:
savings_calculator(20000,15,0.1)== 635449.63是
savings_calculator(10000,20,0.1)== 572749.99这会返回false,因为四舍五入会返回错误的值
答案 0 :(得分:1)
如果您没有在每次迭代中都取整,而仅在最后一次进行,您应该得到正确的答案:
def savings_calculator(PMT, n, i):
FV = 0
for j in range(n):
interest = FV * i
FV = FV + interest
FV = FV + PMT
FV = round(FV,2)
return FV
舍入本质上通过降低精度引入了一个小的误差。在许多迭代中,此错误加起来,因此舍入只能在最后完成。