Javascript - 你如何找到一段时间内的总余额复利?

Javascript - How do you find the total balance compound interest over time?

我正在尝试创建一个小程序来显示总复利。 例如,假设每年一个人的维护费用要增加 5%。他们的起价为 100 美元,但一年后,他们将每年支付 105 美元,50 年后,他们将支付 1147 美元。

我在这个网站上找到了一个公式 ()。这适用于每年的付款金额,但总付款金额似乎不正确。

这是代码:

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 年后支付的总金额。 根据此公式(使用示例 amount:100、percentage:5、duration: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

正确的公式是 T = a/i*((1+i)^(n+1) - (1+i)) 其中 n 是年数,a 是你的钱,i 是利息率。