Функция PMT Javascript не возвращает ожидаемые результаты - PullRequest
0 голосов
/ 23 сентября 2019

Я пытаюсь рассчитать выплаты по кредиту с помощью функции PMT.Я попытался воссоздать это в Javascript, используя следующую формулу, но результаты не те, что я ожидаю.Все переменные возвращают ожидаемые значения:

var pv = loan amount
var fv = future value
var i = interestrate
var n = numberofpayments

var repayment = (pv - (fv / (Math.pow(1 + i), n))) / (1 - (1 / Math.pow(1 + i), n) / i);

Скорее всего, я где-то использую неправильный синтаксис Javascript (я довольно новичок в Javascript), или это может быть ошибка с моей формулой, поэтому любойпомощь будет принята с благодарностью.

Используя следующий пример:

pv = 10000
fv = 5000
i = 0.25
n = 36

Я получаю следующий вывод из вышеприведенной формулы: -68.96

Это неверно,правильный результат должен быть около: 158

Формула основана на: http://www.tvmcalcs.com/index.php/calculators/apps/lease_payments

Ответы [ 2 ]

2 голосов
/ 23 сентября 2019

ваша проблема в том, что у вас есть Math.pow (1 + i), n.Должно быть Math.pow (1 + i, n)

var repayment = (pv - (fv / (Math.pow(1 + i, n)))) / (1 - (1 / Math.pow(1 + i, n)) / i);

--- update

Вот правильная формула:

var pv = 10000;
var fv = 5000;
var i = 0.25 / 12;
var n = 36;

function payment() {
  return (pv - fv) * (i) / (1 - (Math.pow(1 + i, -n)));
}
0 голосов
/ 27 сентября 2019

Наконец получил его на работу:

   var pv = parseFloat(document.repaymentcalc.loanamount.value, 10);
   var i = parseFloat(document.repaymentcalc.interestrate.value, 10) / 1200;
   var n = parseFloat(document.repaymentcalc.numberpayments.value, 10) * 12;
   var fv = parseFloat(document.repaymentcalc.finalpayment.value, 10);

   var repayment = ( pv - (fv / Math.pow((1 + i), n))) / ((1 - (1 / Math.pow((1 + i), n))) / i);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...