Создайте функцию Saving_calculator (PMT, N, I) `, который рассчитывает сбережения вашего клиента при выходе на пенсию

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

Проблема в том, что когда я заканчиваю FV, я иногда получаю неправильное значение

Тестовые примеры ниже должны возвращать true:

Сберегательный калькулятор (20000, 15, 0.1) == 635449.63 True

saving_calculator (10000, 20, 0.1) == 572749.99 это возвращает false, потому что округление возвращает неправильное значение

  • 0
    Пожалуйста, оставьте свой код с правильным отступом! Это поможет намного легче помочь
  • 0
    Как отмечается в ответе JackT, вы не должны округляться на промежуточных этапах. Как общее научное правило, никогда не округляйте промежуточные шаги, потому что со временем вы будете усугублять ошибку.
Показать ещё 1 комментарий
Теги:
python-3.x

1 ответ

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

Закругление по сути вводит небольшую ошибку за счет снижения точности. За многие итерации эта ошибка складывается, поэтому округление должно выполняться только в конце.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню