// 辅助函数,保留两位小数
function roundToTwoDecimal(value) {
return Math.round(value * 100) / 100;
}
function calculatePMT(rate, nper, pv, fv, type) {
// rate: 年利率
// nper: 总期数
// pv: 现值(贷款或投资的初始金额)
// fv: 未来值(贷款或投资的未来金额,通常为零)
// type: 付款类型,0表示期末支付,1表示期初支付
if (rate === 0) {
return -(pv + fv) / nper;
}
debugger
var pmt = (rate * (pv * Math.pow(1 + rate, nper) + fv)) / (Math.pow(1 + rate, nper) - 1);
if (type === 1) {
pmt /= 1 + rate;
}
return roundToTwoDecimal(-pmt);
}
// 使用示例
var pmtC33 = calculatePMT(0.0099 / 12, 16 * 12, -15616.96, 0);
下图展示和excel计算展示的数据一样