Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将数学公式转换为javascript_Javascript_Math_Translate - Fatal编程技术网

将数学公式转换为javascript

将数学公式转换为javascript,javascript,math,translate,Javascript,Math,Translate,我需要帮助将贷款余额公式转换为JavaScript我添加了 这就是我目前的情况,但我一直得到错误的答案 var loanBalance = a * Math.pow((1 + r), n) - p * ((Math.pow((1 + r), n) - 1) / r); 我的计算器有四个功能,但只有这一个给了我错误的答案,正如你所看到的,我对这一切都是新手,提前谢谢 以下是我遇到问题的函数: function doBalance() { var principa

我需要帮助将贷款余额公式转换为JavaScript我添加了

这就是我目前的情况,但我一直得到错误的答案

 var loanBalance = a * Math.pow((1 + r), n) - p * ((Math.pow((1 + r), n) - 1) / r); 
我的计算器有四个功能,但只有这一个给了我错误的答案,正如你所看到的,我对这一切都是新手,提前谢谢

以下是我遇到问题的函数:

      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 以下是我正在使用的值:

我想你的括号有点偏了:

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

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) 
}

首先,需要正确放置支架

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

由于我们已经解决了您编写的代码行为正确并产生正确结果的问题,因此我将给出一个小建议。应用一些代数来减少表达式,以获得:

b = (((1+r)^n)(ra-p) + p)/r
在代码中

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

这将减少您的计算量:)

乍一看,您似乎已经正确创建了函数。。。是不是很多?你能提供一些样本输入输出吗??比如提供什么和期望什么答案你从哪里得到的公式?可能是错误的,或者您输入的是错误的。我添加了一个给我带来麻烦的函数,答案应该是54306.40,每次我更改括号时,它都会给我其他东西。@JaromandaX我开始认为这可能是正确的答案,我就是搞不懂。这和原来的问题给出了相同的答案。你认为它有什么帮助?这给出了与原始问题相同的答案。你认为它有什么帮助?你添加的括号没有任何区别。乘法和除法优先于加法和减法,因此,即使括号不存在,也会在减法之前对括号中的部分进行求值。这给出了与原始问题相同的答案。你认为它有什么帮助?额外的括号对值的评估顺序没有影响。即使OP的括号也比需要的多。好的,如果您认为它不起作用,请为我提供正确的输出和一些变量的输入值。