首先我们假设我们的借款总额为a,借款年利率为n,借款月利率为b,借款期数为d,总还款为z,每月应还款为y。
则会有 z = d * y;
首先我们来算第一个月还钱情况。我们第一个月还的总利息为 a * b,第一个月还的本金为x1;
则有 a * b + x1 = y; ①
同理第二个月为:
(a - x1) * b + x2 = y; ②
(a- x1 -x2) * b + x3 = y; ③
……
(a-x1 - x2 - x3 - … xd-1)* b + xd) = y;
则根据①②③,我们能够得出, x2 = (1+b) * x1, x3 = (1+b) * x2,所以也就有x3 = (1+b) * (1+b) * x1;所以 有xd = (1+b)^(d-1)* x1;
而 a = x1 + x2 + …+ xd = (1+b)^0 * x1 + (1+b)^1 * x1 + …+(1+b)^(d-1) * x1;
由因此我们能够求出x1 = a / [ (1+b)^0 + (1+b)^1 + …+(1+b)^(d-1)];
所以根据①,能够求出,y = x1 + ab;
好,根据上面我们开始写程序,下面用js的方法去写,其他的都以此类推:
var a = 100000; // 借款总额
var b = 0.015; // 月利率
var d = 12; // 借款期数
var temp = 0;
for(var i = 0; i < d; i++) {
temp += Math.pow((1 + b), i);
}
var c = a / temp;
console.log(Math.round(c + a * b)); // 输出每月应还金额
console.log(Math.round((c + a * b) * d)); // 输出总还款金额
console.log(Math.round((c + a * b) * d - a)); // 输出一共还款利息
则输出的结果为: