js贷款还款计算:等额本金、等额本息、先息后本、等本等息

可以输出每种贷款方式还款汇总信息和每一期的还款明细。

网上大多只有一个计算器,或者只计算还款总额,还款方式也不全。

等额本息、等额本金还款方式借用的某位博主的代码,链接找不到了。

// 先息后本
function xxhb(year_lilv, money, month) {
	money = money * 10000;
	var objArray = new Array();
	var interestM = 0; // 月还款额
	var interestTotal = 0; // 累计还款总额
	var chbj = 0; // 每月偿还本金0 最后一个月偿还全部本金
	var lxze = money * year_lilv / 12 * 0.01 * month; // 利息总额
	for (var i = 1; i <= month; i++) {
		var t1 = lxze / month; //第i月还款利息
		interestM = t1; //第i月还款额 = 每月偿还利息 最后一个月还款额 = 每月利息 + 贷款本金
		if (i == month) { // 最后一个月
			chbj = money; // 
			interestM = t1 + money;
		}
		objArray[i - 1] = new Array();
		objArray[i - 1]['qc'] = i; //期次
		objArray[i - 1]['chbx'] = (interestM).toFixed(2); //第i个月,偿还本息(元) 月供
		objArray[i - 1]['chlx'] = (interestM - chbj).toFixed(2); //第i个月,偿还利息(元)
		objArray[i - 1]['chbj'] = (chbj).toFixed(2); //第i个月,偿还本金(元)
		objArray[i - 1]['sybj'] = (money - (chbj * i)).toFixed(2); //第i个月,剩余本金(元)
		interestTotal = interestTotal + interestM;
	}

	interestTotal = (Math.round(interestTotal * 100)) / 100; //累计还款总额
	var yg = objArray[0]['chbx']; //月供 最高月供
	var ljhkze = interestTotal; //累计还款总额

	var resArray = new Array();
	resArray['list_res'] = new Array(); //列表信息数组
	resArray['list_res'] = objArray;
	resArray['simp_res'] = new Array(); //基础信息数组
	resArray['simp_res']['yg'] = parseFloat(yg).toFixed(0);
	resArray['simp_res']['ljhkze'] = parseFloat(ljhkze).toFixed(0);
	resArray['simp_res']['lxze'] = parseFloat(lxze).toFixed(0);

	return resArray;
}
// 等本等息
function dbdx(year_lilv, money, month) {
	money = money * 10000;
	var objArray = new Array();
	var interestM = 0; // 月还款额
	var interestTotal = 0; // 累计还款总额
	var chbj = money / month; // 每月偿还本金 = 贷款金额 除以 月份
	var lxze = money * year_lilv / 12 * 0.01 * month; // 利息总额
	for (var i = 1; i <= month; i++) {
		var t1 = lxze / month; //第i月还款利息
		interestM = chbj + t1; //第i月还款额 = 每月偿还利息 + 每月偿还本金
		objArray[i - 1] = new Array();
		objArray[i - 1]['qc'] = i; //期次
		objArray[i - 1]['chbx'] = (interestM).toFixed(2); //第i个月,偿还本息(元) 月供
		objArray[i - 1]['chlx'] = (interestM - chbj).toFixed(2); //第i个月,偿还利息(元)
		objArray[i - 1]['chbj'] = (chbj).toFixed(2); //第i个月,偿还本金(元)
		objArray[i - 1]['sybj'] = (money - (chbj * i)).toFixed(2); //第i个月,剩余本金(元)
		interestTotal = interestTotal + interestM;
	}

	interestTotal = (Math.round(interestTotal * 100)) / 100; //累计还款总额
	var yg = objArray[0]['chbx']; //月供 最高月供
	var ljhkze = interestTotal; //累计还款总额

	var resArray = new Array();
	resArray['list_res'] = new Array(); //列表信息数组
	resArray['list_res'] = objArray;
	resArray['simp_res'] = new Array(); //基础信息数组
	resArray['simp_res']['yg'] = parseFloat(yg).toFixed(0);
	resArray['simp_res']['ljhkze'] = parseFloat(ljhkze).toFixed(0);
	resArray['simp_res']['lxze'] = parseFloat(lxze).toFixed(0);

	return resArray;
}
// 等额本金
function debj(year_lilv, money, month) {
	money = money * 10000;

	var active = year_lilv * 10 / 12 * 0.001;
	var objArray = new Array();
	var interestM = 0; //月还款额
	var interestTotal = 0; //累计还款总额
	var chbj = money / month; //每月偿还本金(元) month 3年36
	for (var i = 1; i <= month; i++) {
		var t1 = (money - money * (i - 1) / month) * active; //第i月还款利息
		interestM = money / month + t1; //第i月还款额
		objArray[i - 1] = new Array(); //声明二维,每一个一维数组里面的一个元素都是一个数组;
		objArray[i - 1]['qc'] = i; //期次
		objArray[i - 1]['chbx'] = (interestM).toFixed(2); //第i个月,偿还本息(元) 月供
		objArray[i - 1]['chlx'] = (interestM - chbj).toFixed(2); //第i个月,偿还利息(元)
		objArray[i - 1]['chbj'] = (chbj).toFixed(2); //第i个月,偿还本金(元)
		objArray[i - 1]['sybj'] = (money - (chbj * i)).toFixed(2); //第i个月,剩余本金(元)
		if (objArray[i - 1]['sybj'] <= 1) { //最后一个月出现小于1元的值
			objArray[i - 1]['sybj'] = 0.00; //第i个月,剩余本金(元)
		}
		interestTotal = interestTotal + interestM;
	}
	interestTotal = (Math.round(interestTotal * 100)) / 100; //累计还款总额
	var yg = objArray[0]['chbx']; //月供 最高月供
	var ljhkze = interestTotal; //累计还款总额
	var lxze = (ljhkze - money); //利息总额
	lxze = lxze.toFixed(0);
	var yxxdy = (parseFloat(objArray[0]['chbx']) + parseFloat(objArray[month - 1]['chbx'])); //月薪需大于
	yxxdy = yxxdy.toFixed(0);
	var resArray = new Array();
	resArray['simp_res'] = new Array(); //顶部基础信息数组
	resArray['list_res'] = new Array(); //底部列表信息数组
	resArray['simp_res']['yg'] = parseFloat(yg).toFixed(0);
	resArray['simp_res']['ljhkze'] = parseFloat(ljhkze).toFixed(0);
	resArray['simp_res']['lxze'] = parseFloat(lxze).toFixed(0);
	resArray['simp_res']['yxxdy'] = parseFloat(yxxdy).toFixed(0);
	resArray['list_res'] = objArray;

	return resArray;
}
// 等额本息
function debx(year_lilv, money, month) {
	money = (money * 10000);

	var active = year_lilv * 10 / 12 * 0.001;
	var t1 = Math.pow(1 + active, month);
	var t2 = t1 - 1;
	var tmp = t1 / t2;
	var monthratio = active * tmp; //月利率
	var monthBack = (money * monthratio).toFixed(2); //每月支付本息
	year_lilv = year_lilv * 0.01; //百分比
	var yue_lilv = ((year_lilv / 12));
	var objArray = new Array(); //等额本息结果二维数组
	var ljch_bj = 0; //累积偿还本金
	var pre_sybj = 0; //上一个月剩余本金
	var i = 1;
	for (i = 1; i <= month; i++) { //等额本息
		objArray[i - 1] = new Array(); //声明二维,每一个一维数组里面的一个元素都是一个数组;
		objArray[i - 1]['qc'] = i; //期次
		objArray[i - 1]['chbx'] = monthBack; //第i个月,偿还本息(元) 月供
		if (i == 1) { //第一个月
			pre_sybj = money;
		} else {
			pre_sybj = objArray[i - 2]['sybj'];
		}
		objArray[i - 1]['chlx'] = (pre_sybj * yue_lilv).toFixed(2); //第i个月,偿还利息(元)每月付息额 =(贷款本金-已还清贷款本金)×月利率
		var chbj = (objArray[i - 1]['chbx'] - objArray[i - 1]['chlx']); //第i个月,偿还本金(元)
		objArray[i - 1]['chbj'] = chbj.toFixed(2);
		ljch_bj += chbj;
		var sybj = (money - ljch_bj);
		objArray[i - 1]['sybj'] = sybj.toFixed(2); //第i个月,剩余本金(元)
		if (sybj <= 1) { //最后一个月出现小于1元的值
			objArray[i - 1]['sybj'] = 0.00; //第i个月,剩余本金(元)
		}
	}
	var yg = monthBack; //月供
	var ljhkze = monthBack * month; //累计还款总额
	var lxze = ljhkze - money; //利息总额
	var yxxdy = monthBack * 2; //月薪需大于
	var resArray = new Array();
	resArray['simp_res'] = new Array(); //顶部基础信息数组
	resArray['list_res'] = new Array(); //底部列表信息数组
	resArray['simp_res']['yg'] = parseFloat(yg).toFixed(0);
	resArray['simp_res']['ljhkze'] = parseFloat(ljhkze).toFixed(0);
	resArray['simp_res']['lxze'] = parseFloat(lxze).toFixed(0);
	resArray['simp_res']['yxxdy'] = parseFloat(yxxdy).toFixed(0);
	resArray['list_res'] = objArray;

	return resArray;
}

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值