Помощь с проблемой в моих кодах возврата значений

Во-первых, я просто ищу толчок в правильном направлении, поэтому никаких откровенных ответов, пожалуйста. Мой код работает правильно или я так думал, что всякий раз, когда я запускаю код с тестовыми значениями, я получаю сумасшедшее значение для суммы ежемесячного платежа.

Я использую эти значения как дано мне: Сумма; $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 ответа

Решение

Две вещи:

  1. Вы не поделили процентную ставку, которая вводится в процентах, на 100 чтобы преобразовать его в десятичную. Разделите это на 100,
  2. Вам нужно разделить процентную ставку на 12 получить месячный курс по формуле.

РЕДАКТИРОВАТЬ (вы сказали, что нет прямых ответов)

С этими изменениями в вашем коде я получаю такой вывод

1148.15796128275

(Вы можете отформатировать этот номер по мере необходимости.)

Это скорее предположение, но как насчет использования немного больше скобок в этом выражении:

double monthlyPayment =
 loanAmt * interestRate/
 (1 - 1/Math.pow(1 + interestRate, months));

чтобы убедиться, что он рассчитан в нужном порядке

Другие вопросы по тегам