如何计算储蓄账户达到一定金额所需的每月供款?

Posted

技术标签:

【中文标题】如何计算储蓄账户达到一定金额所需的每月供款?【英文标题】:How to calculate the monthly payment needed to reach a certain amount in savings account? 【发布时间】:2020-11-13 05:41:16 【问题描述】:

考虑到年利率、储蓄起始金额、最终金额以及让它增长的时间,我正在尝试使用 javascript 来获取储蓄账户中达到一定金额所需的每月付款。这是一个例子:

PV=1000
FV=10000
Nper = 5 * 12 = 60
Rate = 1% /12 = 0.0083%

不知何故,答案是$145.51,但我尝试的每个公式都会给出不同的结果。在 excel 上,它是这样使用来得到这个答案的:PMT(0.083%,60,1000,-10000),我尝试了以下方法:

var pv = 1000;
var fv = -10000;
var i = 0.01 / 12;
var n = 60;

function payment() 
  return (pv - fv) * (i) / (1 - (Math.pow(1 + i, -n)));

这没有给出想要的答案。这给了我188.03 而不是145.51。知道为什么吗?这不是正确的方程式吗?谢谢!

【问题讨论】:

【参考方案1】:

这是 PMT 的正确公式。我添加了一个快速集成以进行验证。来源:https://gist.github.com/maarten00/23400873d51bf2ec4eeb

const pv = 1000;
const fv = -10000;
const i = 0.01 / 12;
const n = 60;

function pmt(rate_per_period, number_of_payments, present_value, future_value, type)
    future_value = typeof future_value !== 'undefined' ? future_value : 0;
    type = typeof type !== 'undefined' ? type : 0;

    if(rate_per_period != 0.0)
        // Interest rate exists
        var q = Math.pow(1 + rate_per_period, number_of_payments);
        return -(rate_per_period * (future_value + (q * present_value))) / ((-1 + q) * (1 + rate_per_period * (type)));

     else if(number_of_payments != 0.0)
        // No interest rate, but number of payments exists
        return -(future_value + present_value) / number_of_payments;
    

    return 0;


document.getElementById("showPayment").innerhtml = pmt(i, n, pv, fv);
<div class="showPayment" id="showPayment">

</div>

【讨论】:

Dang 的工作完全符合我的需要,非常感谢! 如果每天复利,你知道如何用它来计算每月还款吗?我尝试将 i 设置为等于 0.01/3650.01/360 但两个答案都相差约 4 美元。 我不熟悉财务计算。你能提供我目前使用的公式和一个我可以比较我的函数的例子吗?

以上是关于如何计算储蓄账户达到一定金额所需的每月供款?的主要内容,如果未能解决你的问题,请参考以下文章

如何创建不使用熊猫的个人账户的平均每月,季度提款金额的新列?

计算每月还款金额

每个用户达到的标记数量阈值

BigDecimal的运算——加减乘除,有关金额的计算

使用递归计算每月信用卡最低还款额

复利计算4.0