2015-11-26 58 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

拆分公式,

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; 

这将减少计算量为您计算:)