C - Я рассчитываю амортизацию и мои результаты выключены
Я пытаюсь рассчитать ежемесячный платеж по кредиту, и это всегда получается неправильно.
Формула выглядит следующим образом, где я интерес
((1 + i)^months /
(1 + i)^months - 1)
* principal * i
Предполагая, что годовая процентная ставка и основная сумма являются невидимой плавающей точкой, вы можете сказать мне, что не так с моей формулой?
double calculatePaymentAmount(int annualInterestRate,
int loanSize,
int numberOfPayments;
{
double monthlyInterest = annualInterestRate / 1200.0;
return
(
pow(1 + monthlyInterest, numberOfPayments) /
(pow(1 + monthlyInterest, numberOfPayments) - 1)
)
* (loanSize / 100)
* monthlyInterest;
}
Например: процентная ставка 1,25 и размер кредита 250 на 12 месяцев дают 22,27 вместо 20,97.
Заранее спасибо.
Изменить 1: Изменен ежемесячный процент к годовому проценту ставок / 1200
3 ответа
Если предположить, annualInterestRate
в процентах, то вы должны рассчитать monthlyInterest
как это:
double monthlyInterest = pow(1+(double)annualInterestRate / 100, 1/12.0) - 1.0;
Я нашел, что было не так. monthInterest = yearInterestRate / 1200.0 / 100
Преобразование
double monthlyInterest = (double)annualInterestRate /
1200 / 100;
в
double monthlyInterest = (double)annualInterestRate / 12.0;
сделал бы трюк.
Вы можете узнать больше о приоритете операторов в c с http://en.cppreference.com/w/c/language/operator_precedence