Javascript Math:几何系列

时间:2015-05-08 18:33:06

标签: javascript math finance

我想创建一个罗斯IRA值计算器。最终结果将接受年度供款金额,利率和供款年度总数的值。

计算 - 几何系列 - 我需要的是:

Balance(Y) = P(1 + r)Y + c[ ((1 + r)Y + 1 - (1 + r)) / r ]

FWIW,我在这里获取我的数学信息:http://www.moneychimp.com/articles/finworks/fmbasinv.htm

如何用Javascript写这个呢?我一直在阅读有关数学函数的内容,但我似乎无法绕过它......

3 个答案:

答案 0 :(得分:1)

我肯定会读到JavaScripts operator precedence

需要注意的一些事项......

分组具有最高优先级(),而不是方括号[] 方括号用于访问对象成员和数组文字。

JavaScript中使用Math.pow(x, n)

的指数没有运算符

对于数学运算,你必须使用运算符4(x + 1) 告诉你4的错误不是一个功能。 4 * (x + 1)有效。

以下运算符的左右* / % + -评估为* / % 保持与+ -相同的优先权。因此,数学运算的行为与pemdas类似。

另一个注意事项JavaScript是一种动态的松散类型语言。所有数字都是64位浮点数,这可能会在某些数学方程中产生奇数结果,例如

> .1 + .2 = 0.30000000000000004

Another good read

答案 1 :(得分:1)

对于求解任何数学系列,都可以使用以下算法。即使在某些情况下,它也无法满足您的预期答案,但是在其他方面它是正确的。

步骤如下:
    1)得出数字之间的差异,如下所示:
    2)保持差异直到看起来相同(差异为0)。
    3)放入相同的最后一个数字,该数字在该序列中将相同,并通过添加该差异来增加序列。

<pre>
Examples are as below:

1       2       3       4       5       6       **7**

   1        1       1       1       1       **1**   


1       4       9       16      25      **36**      
     3      5       7       9       **11**          
        2       2       2       **2**               



1       8       27      64      125     **216**     
    7       19      37      61      **91**          
        12      18      24      **30**              
            6       6       **6**                   
                0       **0**                       


</pre>

The same above algorithm is implemented in below js code.


<pre>
//the input

var arr=[1,4,9,16];

var pa6inoArrayMelvo = function(arrr){
var nxtArr=[];
    for(i=0;i<arrr.length;i++){
        if(arrr[i+1] != undefined){
            nxtArr.push(arrr[i+1] -arrr[i]);
        }
    }
    return nxtArr;
}
var keepArray=[];

var keepAlltheArray= function(ar){
    var tempArr=[];

        keepArray.push(ar);
        if(ar.length>1){

          tempArr=pa6inoArrayMelvo(ar);       
          keepAlltheArray(tempArr);
        }else{
            generateArray(keepArray.length-1);
            console.log("ans is:"+keepArray[0]);
        }


}

var generateArray=function(idx){
    if(keepArray[idx+1]){
        var a=keepArray[idx+1];
        var b=keepArray[idx];
        var ans=a[a.length-1]+b[a.length-1];
        keepArray[idx].push(ans);
    }else{
        var ans=keepArray[idx][keepArray[idx].length-1];
        keepArray[idx].push(ans);
    }
    if(idx>0){
        generateArray(idx-1);
    }
}

keepAlltheArray(arr);

</pre>

答案 2 :(得分:0)

正如Yann Chabot所说

P*(1 + r)*Y + c(((1 + r)*Y + 1 - (1 + r)) / r) 

是正确的答案,但是作为旁注,如果你没有P,那么你应该默认将它设置为1。