【问题标题】:Javascript - How do you find the total balance compound interest over time?Javascript - 你如何找到总余额复利?
【发布时间】: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! :-)
  • 所以你得到的答案是不正确的。您发布的链接中还有其他答案 - 每个都给出不同的结果

标签: javascript calculation


【解决方案1】:

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

【讨论】:

  • 如果计算正确,为什么会被否决
  • 不知道,作者写的公式不对。
猜你喜欢
  • 2020-06-23
  • 2013-02-18
  • 1970-01-01
  • 2021-07-05
  • 1970-01-01
  • 2021-10-26
  • 2021-08-31
  • 2015-08-31
  • 1970-01-01
相关资源
最近更新 更多