я работал над проектом, мне пришлось написать код, который вычисляет сбережения клиентов при выходе на пенсию:
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:
Сберегательный калькулятор (20000, 15, 0.1) == 635449.63 True
saving_calculator (10000, 20, 0.1) == 572749.99 это возвращает false, потому что округление возвращает неправильное значение
Если на каждой итерации вы не набираете обороты и только делаете это в конце, вы должны получить правильный ответ:
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
Закругление по сути вводит небольшую ошибку за счет снижения точности. За многие итерации эта ошибка складывается, поэтому округление должно выполняться только в конце.