因为用到 所以记录
房贷计算器:
效果图
新浪乐居图:
其中的计算公式按照新浪乐居的js代码进行计算,公式如下:
公共方法:
//本金还款的月还款额(参数: 年利率 / 贷款总额 / 贷款总月份 / 贷款当前月0~length-1) function getMonthMoney2(lilv, total, month, cur_month){ var lilv_month = lilv / 12;//月利率 //return total * lilv_month * Math.pow(1 + lilv_month, month) / ( Math.pow(1 + lilv_month, month) -1 ); var benjin_money = total / month; return (total - benjin_money * cur_month) * lilv_month + benjin_money; } //本息还款的月还款额(参数: 年利率/贷款总额/贷款总月份) function getMonthMoney1(lilv, total, month){ var lilv_month = lilv / 12;//月利率 return total * lilv_month * Math.pow(1 + lilv_month, month) / (Math.pow(1 + lilv_month, month) - 1); }
1、等额本息
(1)公积金/商业贷款
//2.本息还款 //月均还款 var month_money1 = getMonthMoney1(lilv, daikuan_total, month);//调用函数计算 fmobj.month_money1.value = Math.round(month_money1 * 100) / 100 + "(元)"; //还款总额 var all_total1 = month_money1 * month; fmobj.all_total1.value = Math.round(all_total1 * 100) / 100; //支付利息款 fmobj.accrual1.value = Math.round((all_total1 - daikuan_total) * 100) / 100;
(2)混合贷款
//2.本息还款 //月均还款 var month_money1 = getMonthMoney1(lilv_sd, total_sy, month) + getMonthMoney1(lilv_gjj, total_gjj, month);//调用函数计算 fmobj.month_money1.value = Math.round(month_money1 * 100) / 100 + "(元)"; //还款总额 var all_total1 = month_money1 * month; fmobj.all_total1.value = Math.round(all_total1 * 100) / 100; //支付利息款 fmobj.accrual1.value = Math.round((all_total1 - daikuan_total) * 100) / 100;
2、等额本金
(1)公积金/商业贷款
//1.本金还款 //月还款 var all_total2 = 0; var month_money2 = ""; for (j = 0; j < month; j++) { //调用函数计算: 本金月还款额 huankuan = getMonthMoney2(lilv, daikuan_total, month, j); all_total2 += huankuan; huankuan = Math.round(huankuan * 100) / 100; //fmobj.month_money2.options[j] = new Option( (j+1) +"月," + huankuan + "(元)", huankuan); month_money2 += (j + 1) + "月," + huankuan + "(元)\n"; } fmobj.month_money2.value = month_money2; //还款总额 fmobj.all_total2.value = Math.round(all_total2 * 100) / 100; //支付利息款 fmobj.accrual2.value = Math.round((all_total2 - daikuan_total) * 100) / 100;
(2)混合贷款
for (j = 0; j < month; j++) { //调用函数计算: 本金月还款额 huankuan = getMonthMoney2(lilv_sd, total_sy, month, j) + getMonthMoney2(lilv_gjj, total_gjj, month, j); all_total2 += huankuan; huankuan = Math.round(huankuan * 100) / 100; //fmobj.month_money2.options[j] = new Option( (j+1) +"月," + huankuan + "(元)", huankuan); month_money2 += (j + 1) + "月," + huankuan + "(元)\n"; } fmobj.month_money2.value = month_money2; //还款总额 fmobj.all_total2.value = Math.round(all_total2 * 100) / 100; //支付利息款 fmobj.accrual2.value = Math.round((all_total2 - daikuan_total) * 100) / 100;