我想创建一个罗斯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写这个呢?我一直在阅读有关数学函数的内容,但我似乎无法绕过它......
答案 0 :(得分:1)
我肯定会读到JavaScripts operator precedence
需要注意的一些事项......
分组具有最高优先级()
,而不是方括号[]
方括号用于访问对象成员和数组文字。
JavaScript中使用Math.pow(x, n)
对于数学运算,你必须使用运算符4(x + 1)
告诉你4
的错误不是一个功能。 4 * (x + 1)
有效。
以下运算符的左右* / % + -
评估为* / %
保持与+ -
相同的优先权。因此,数学运算的行为与pemdas
类似。
另一个注意事项JavaScript是一种动态的松散类型语言。所有数字都是64位浮点数,这可能会在某些数学方程中产生奇数结果,例如
> .1 + .2 = 0.30000000000000004
答案 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)