【发布时间】:2021-04-02 11:19:21
【问题描述】:
我正在尝试创建一个显示总复利的小程序。 例如,假设每年一个人的维护费增加 5%。他们的起步价为 100 美元,但一年后,他们每年支付 105 美元,50 年后,他们将支付 1147 美元。
我在这个网站上找到了一个公式 (Javascript - How do you find the total increase of a number over time?)。这适用于每年的付款金额,但支付的总金额似乎不正确。
这是代码:
function myFunction() {
var a = +document.getElementById('amount').value;
var i = +document.getElementById('percentage').value / 100;
var d = +document.getElementById('duration').value;
var payment = a * ((1 + i) ** d);
var total = a / i * (((1 + i) ** d) + i * ((1 + i) ** d - d - 1) - 1);
document.getElementById('payment').textContent = payment;
document.getElementById('total').textContent = total;
}
<input id="amount" type="number" onchange="myFunction()">
<input id="percentage" type="number" onchange="myFunction()">
<input id="duration" type="number" onchange="myFunction()">
<h2 id="payment"></h2>
<h2 id="total"></h2>
我需要计算 50 年后支付的总金额。 根据这个公式(使用示例金额:100,百分比:5,持续时间:50),总价值为 16981.54 美元。然而,在手动添加所有年度值(见下文)后,它的计算结果应该是 21,985 美元。出了什么问题?
这是细分:
Year 1 Value:105
Year 2 Value:110
Year 3 Value:116
Year 4 Value:122
Year 5 Value:128
Year 6 Value:134
Year 7 Value:141
Year 8 Value:148
Year 9 Value:155
Year 10 Value:163
Year 11 Value:171
Year 12 Value:180
Year 13 Value:189
Year 14 Value:198
Year 15 Value:208
Year 16 Value:218
Year 17 Value:229
Year 18 Value:241
Year 19 Value:253
Year 20 Value:265
Year 21 Value:279
Year 22 Value:293
Year 23 Value:307
Year 24 Value:323
Year 25 Value:339
Year 26 Value:356
Year 27 Value:373
Year 28 Value:392
Year 29 Value:412
Year 30 Value:432
Year 31 Value:454
Year 32 Value:476
Year 33 Value:500
Year 34 Value:525
Year 35 Value:552
Year 36 Value:579
Year 37 Value:608
Year 38 Value:639
Year 39 Value:670
Year 40 Value:704
Year 41 Value:739
Year 42 Value:776
Year 43 Value:815
Year 44 Value:856
Year 45 Value:899
Year 46 Value:943
Year 47 Value:991
Year 48 Value:1040
Year 49 Value:1092
Year 50 Value:1147
【问题讨论】:
-
您应该将输入解析为整数。输入值是表示为字符串的数字
-
@LelioFaieta - 他们是,请注意获取值的行上的
+。将字符串转换为数字。 -
@T.J.Crowder 谢谢我没注意到。正在寻找 parseInt! :-)
-
所以你得到的答案是不正确的。您发布的链接中还有其他答案 - 每个都给出不同的结果