Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/377.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/1/visual-studio-2012/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_Parseint_Parsefloat - Fatal编程技术网

Javascript 年复利计算

Javascript 年复利计算,javascript,parseint,parsefloat,Javascript,Parseint,Parsefloat,该代码运行时,每年输出“年度账户余额(i)=100”。很明显,答案不应该每次都是100,但我看不出我在等式中做错了什么 var invest; var rate; var amount; rate = 0.08; invest = 100,000; for(var i=1;i<=10;i++){ amount = ((parseInt(invest)) * (1.0 + (parseInt(rate)) * (parseInt(i)))) do

该代码运行时,每年输出“年度账户余额(i)=100”。很明显,答案不应该每次都是100,但我看不出我在等式中做错了什么

var invest;
var rate;
var amount; 

rate = 0.08;
invest = 100,000;

    for(var i=1;i<=10;i++){
        amount = ((parseInt(invest)) * (1.0 + (parseInt(rate)) * (parseInt(i))))
        document.write("Annual Account Balance for Year " + i + " = " + amount + "<br>");
    }
var投资;
var率;
风险价值金额;
比率=0.08;
投资=100000;

对于(var i=1;i而不是调用
parseInt(rate)
,您需要调用
parseFloat(rate)
——尽管根据您的代码,这些是数字——因此它们不需要被解析

parseInt
将解析字符串中的整数(尽管它仍然是“Number”类型)。在这种情况下,它实际上返回的是0,而不是您要使用的0.08。对数字调用
parseInt
将其从数字转换为字符串,然后再返回…这基本上是无用的

此外,正如Oriol所述,您不能在JavaScript中的数字中添加逗号。

parseInt(0.08)
给出了
0
,因此数学没有任何作用。您不需要在这里解析变量,因为您自己定义了它们。您确实只需要在从用户输入读取时进行解析

另外,你的利息计算方法很糟糕。你需要计算利息

此脚本提供了正确的*输出:


*因为我们在这里处理浮点值,所以要非常小心它的精度有限。

注意
100000
计算
100
并返回
000
,这是严格模式下的语法错误(在非严格模式下可能是
0
).rate、invest和i不是字符串..为什么要解析它们?为什么需要
parseFloat
它们已经是数字。
parseFloat
将首先将数字转换为字符串,然后将它们解析为数字。
var invest;
var rate;
var amount; 

rate = 0.08;
invest = 100000;

amount = invest;
for(var i = 1; i <= 10; i++){
    amount = amount * (1.0 + rate);
    document.write("Annual Account Balance for Year " + i + " = " + amount + "<br>");
}
Annual Account Balance for Year 1 = 108000
Annual Account Balance for Year 2 = 116640.00000000001
Annual Account Balance for Year 3 = 125971.20000000003
Annual Account Balance for Year 4 = 136048.89600000004
Annual Account Balance for Year 5 = 146932.80768000006
Annual Account Balance for Year 6 = 158687.43229440006
Annual Account Balance for Year 7 = 171382.42687795206
Annual Account Balance for Year 8 = 185093.02102818823
Annual Account Balance for Year 9 = 199900.4627104433
Annual Account Balance for Year 10 = 215892.49972727877

// this would be the output with your bad math:

Annual Account Balance for Year 1 = 108000
Annual Account Balance for Year 2 = 115999.99999999999 // float funny business, beware!
Annual Account Balance for Year 3 = 124000
Annual Account Balance for Year 4 = 132000
Annual Account Balance for Year 5 = 140000
Annual Account Balance for Year 6 = 148000
Annual Account Balance for Year 7 = 156000
Annual Account Balance for Year 8 = 164000
Annual Account Balance for Year 9 = 172000
Annual Account Balance for Year 10 = 180000