В настоящее время я пишу программу C, которая, помимо прочего, создает и распечатывает таблицу амортизации с номерами, округленными до двух цифр. Я получаю правильные цифры во всем мире, то есть: month_payment = main_paid + interest_paid, за исключением последней строки (последний платеж), где иногда мои результаты не складываются, а один на один. Например:Округление в таблице амортизации
MonthlyPay: 88,83, PrinPaid: 87,96, IntPaid: 0,88
Конечно, глядя на результаты напечатанных 6 цифр это легко понять, почему это происходит:
MonthlyPay: 88.834637, PrincPaid : 87.955087, IntPaid: 0.879551
Каков наилучший способ справиться с такой ситуацией?
Что делают финансовые учреждения?
Последняя строка в амортизации обычно отличается. Его нужно вычислять несколько иначе, чем другие строки. Окончательный платеж должен быть последним балансом плюс проценты за последний период, так как это сумма, которая приводит к нулю окончательного баланса. Вы можете делать расчеты в гроши, чтобы бороться с ошибкой округления. Для максимального реализма убедитесь, что все округление дробных копеек находится в пользу банка. –
. Я делаю вычисления несколько иначе для последнего платежа, и именно поэтому у меня такие проблемы округления. В любом случае, я закончил создание простой процедуры, которая проверяет, равна ли сумма округленных процентов и основного платежа ежемесячной оплате, а если нет, то она добавляет один копейки к ежемесячной оплате или выплате процентов. Это похоже на хак, но это работает как шарм. И это всегда благоприятствует банку. – JSz
@JSz - Звучит как правильное решение для меня. –