Помощь с проблемой в моих кодах возврата значений
Во-первых, я просто ищу толчок в правильном направлении, поэтому никаких откровенных ответов, пожалуйста. Мой код работает правильно или я так думал, что всякий раз, когда я запускаю код с тестовыми значениями, я получаю сумасшедшее значение для суммы ежемесячного платежа.
Я использую эти значения как дано мне: Сумма; $500,000.00 Проценты: 5.6% Годы: 30
Я получаю 2 000 000 или около того в качестве ответа любая помощь будет принята с благодарностью!
В первую очередь часть ниже.
public static double getInterestAmount(Scanner sc, double loanAmt, double interestRate, int years) {
int months = years * 12;
double monthlyPayment = loanAmt * interestRate / (1 - 1/Math.pow(1 + interestRate, months));
return monthlyPayment;
}
}
2 ответа
Две вещи:
- Вы не поделили процентную ставку, которая вводится в процентах, на
100
чтобы преобразовать его в десятичную. Разделите это на100
, - Вам нужно разделить процентную ставку на
12
получить месячный курс по формуле.
РЕДАКТИРОВАТЬ (вы сказали, что нет прямых ответов)
С этими изменениями в вашем коде я получаю такой вывод
1148.15796128275
(Вы можете отформатировать этот номер по мере необходимости.)
Это скорее предположение, но как насчет использования немного больше скобок в этом выражении:
double monthlyPayment =
loanAmt * interestRate/
(1 - 1/Math.pow(1 + interestRate, months));
чтобы убедиться, что он рассчитан в нужном порядке