如何计算储蓄账户达到一定金额所需的每月还款额?
How to calculate the monthly payment needed to reach a certain amount in savings account?
我正在尝试使用 Javascript 在给定年利率、储蓄起始金额、最终金额和时间量的情况下,获得在储蓄账户中达到一定金额所需的每月付款让它成长。这是一个例子:
PV=1000
FV=10000
Nper = 5 * 12 = 60
Rate = 1% /12 = 0.0083%
不知何故答案是5.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
。知道为什么吗?这不是正确的等式吗?谢谢!
这是 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>
我正在尝试使用 Javascript 在给定年利率、储蓄起始金额、最终金额和时间量的情况下,获得在储蓄账户中达到一定金额所需的每月付款让它成长。这是一个例子:
PV=1000
FV=10000
Nper = 5 * 12 = 60
Rate = 1% /12 = 0.0083%
不知何故答案是5.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
。知道为什么吗?这不是正确的等式吗?谢谢!
这是 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>