參考來源: https://www.experts-exchange.com/articles/1948/A-Guide-to-the-PMT-FV-IPMT-and-PPMT-Functions.html
pmt計算公式:
1 double pmt(double r, int nper, double pv, double fv, int type) { 2 double pmt = r / (Math.pow(1 + r, nper) - 1) 3 * -(pv * Math.pow(1 + r, nper) + fv); 4 5 return pmt; 6 }
ppmt計算公式:
double ppmt(double r, int per, int nper, double pv, double fv, int type) { return pmt(r, nper, pv, fv, type) - ipmt(r, per, nper, pv, fv, type); }
ipmt計算公式
1 double ipmt(double r, int per, int nper, double pv, double fv, int type) { 2 3 double ipmt = fv(r, per - 1, pmt(r, nper, pv, fv, type), pv, type) * r; 4 5 if (type == 1) ipmt /= (1 + r); 6 7 return ipmt; 8 }
fv計算公式:
double fv(double r, int nper, double c, double pv, int type) { double fv = -(c * (Math.pow(1 + r, nper) - 1) / r + pv * Math.pow(1 + r, nper)); return fv; }