Я пытаюсь построить калькулятор «Сколько автомобилей я могу себе позволить», который принимает три аргумента: ежемесячный платеж, процентная ставка и срок ссуды. Затем вычисляются три значения, которые будут представлены пользователю с автомобильной стоимостью, которую он может себе позволить, исходя из введенных данных. Тогда мне дали следующую формулу:
CarValue = (MONTHLY PAYMENT * (1-(1+(INTEREST RATE / 12)) ^ -TERM)) / (RATE / 12)
используя ECMAScript 5, я пытаюсь преобразовать эту формулу в JavaScript, и это дает мне дикие результаты:
var monthlyPayment = $scope.model.howMuchCanIAfford.monthlyPayment;
var interestRate = $scope.model.howMuchCanIAfford.interestRate;
var loanLength = $scope.model.howMuchCanIAfford.loanLength;
var monthlyAmount = (monthlyPayment * (Math.pow(1-((1+(interestRate / 12))), (-1 * loanLength)))) / (interestRate / 12);
Пример данных:
monthlyPayment = 700
interestRate = 9.2
loanLength = 84
output: $4,503,380,362,412.83
Очевидно, что выходная сумма сильно отличается, и я не уверен, является ли проблема с преобразованием моей формулы или исходная формула, которую я получил, неверна.
да, я не использую javascript 6, поэтому я не могу использовать **
думаю, вам просто нужно быть осторожным с единицами ... предположим, что процентная ставка - это пропорция, т.е. если пользователь выбирает 9,2%, вы хотите использовать 0,092
Учитывайте приоритет операторов. Минус оценивается после степени экспоненты



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Должен быть:
var monthlyAmount = (monthlyPayment * ( 1- Math.pow( (1+(interestRate / 12)), (-1 * loanLength) ))) / (interestRate / 12);
В исходной формуле -1 находится за пределами круглых скобок, возведенных в степень.
Уверены ли вы? Вы закрываете скобку функции Math.pow без экспоненты
Да, скобки я тоже перепутал. Теперь это должно быть правильно
Вы можете использовать формулу как в Javascript, просто замените
^на**... и убедитесь, что все входные данные - числа.