2015-11-26 2 views
0

мне нужна помощь по преобразованию формулы остатка кредита в JavaScript Я добавил формулу образПреобразовать математик формулу JavaScript

enter image description here

Это, как я в настоящее время, но я получаю неправильный ответ ,

var loanBalance = a * Math.pow((1 + r), n) - p * ((Math.pow((1 + r), n) - 1)/r); 

Мой калькулятор имеет четыре функции, но только этот один giging мне неправильный ответ, как вы можете видеть, я новичок на все это, заранее спасибо.

Вот функция, что у меня возникли проблемы с:

 function doBalance() { 
     var principal = parseFloat(document.getElementById("borrowedBox").value); 
     var annualRate = parseFloat(document.getElementById("rateBox").value); 
     var years = parseFloat(document.getElementById("yearsBox").value); 
     var periodsPerYear = parseFloat(document.getElementById("paymentBox").value); 
     var numberOfPaymentsPaidToDate = parseFloat(document.getElementById("toDatePymtsBox").value); 
     var result = 0; 
     result = computeBalance(principal, annualRate, years, periodsPerYear, numberOfPaymentsPaidToDate); 
     document.getElementById("outputDiv2").innerHTML = "$" + result; 
    } 

    function computeBalance(principal, annualRate, years, periodsPerYear, numberOfPaymentsPaidToDate) { 
     var a = principal; 
     var r = annualRate/periodsPerYear; 
     var p = periodsPerYear*years; 
     var n = numberOfPaymentsPaidToDate; 
     var loanBalance = (a * (Math.pow((1 + r), n))) -((p * (Math.pow((1 + r), n) - 1))/r); 
     return loanBalance.toFixed(2); 
    } 

Ответ должен быть 54306.40 Эти значения, которые я использую: Loan Calculator

+0

на первый взгляд это выглядит как вы правильно создали функцию ... это много? –

+2

Можете ли вы предоставить некоторый выходной входной сигнал? как то, что обеспечивает и что ожидает ответа –

+0

Где у вас эта формула? Возможно, это неправильно или вы вводите неверный ввод –

ответ

1

Я думаю, что ваши кронштейны просто слегка :

var loanBalance = a * Math.pow((1 + r), n) - (p * ((Math.pow((1 + r), n) - 1))/r); 
+0

Это дает тот же ответ, что и исходный вопрос. Как вы думаете, что это помогло? –

+0

Скобки, которые вы добавили, не имеют никакого значения. Умножение и деление имеют преимущество над сложениями и вычитанием, поэтому часть, которую вы заключили в круглые скобки, будет оцениваться до вычитания, даже если скобки отсутствуют. – RobG

3

Split формула,

function loanBalancer(r,n,p,a){ 
    var powerfn = Math.pow((1+r), n); 
    var firstprt = a * powerfn; 
    var num = p(powerfn - 1); 
    var den = r; 
    return firstprt - (num/den) 
} 
+0

Это дает тот же ответ, что и исходный вопрос.Как вы думаете, что это помогло? –

-2

Прежде всего скобки должны быть размещены правильно

var loanBalance = (a * (Math.pow((1 + r), n))) -((p * (Math.pow((1 + r), n) - 1))/r); 
+0

Это дает тот же ответ, что и исходный вопрос. Как вы думаете, что это помогло? –

+0

Дополнительные скобки не влияют на порядок оценки значений. Даже OP имеет больше скобок, чем необходимо. – RobG

+0

ОК, если вы считаете, что его не работает, я предоставляю правильный вывод с некоторыми входными значениями переменной. –

0

Поскольку мы решили тот факт, что код, который вы написали правильно себя и производить правильный результат, я бы дать небольшую рекомендацию. Нанесите алгебру, чтобы уменьшить выражение, чтобы получить:

b = (((1+r)^n)(ra-p) + p)/r 

В коде ...

b = (Math.pow(1+r, n)(r*a - p) + p)/r; 

Это позволит сократить объем вычислений для расчета :)

Смежные вопросы