/**
* 公积金或商业贷款(2015年10月24日最新商贷利率4.90%,公积金利率3.25%)---按贷款金额计算
*/
if(req.getType() == 0){//按贷款金额
/**
* 方式一:每月等额还款(等额本息)-----每月月供额=〔贷款本金×月利率×(1+月利率)^还款月数〕÷〔(1+月利率)^还款月数-1〕
*/
BigDecimal monthRate = req.getRate().divide(new BigDecimal(100 * 12), 9, BigDecimal.ROUND_HALF_UP);// 月利率, 四舍五入保留9位小数
BigDecimal apply  = req.getMoney().multiply(new BigDecimal("10000")); // 总贷款(万元)----转换为元
BigDecimal rate = monthRate.add(new BigDecimal(1)); // (1+月利率)
BigDecimal ratex = rate.pow(req.getYear() * 12); // (1+月利率)^还款月数BigDecimal temp = monthRate.multiply(ratex); // 月利率×(1+月利率)^还款月数
BigDecimal firstPart = apply.multiply(temp);// 〔贷款本金×月利率×(1+月利率)^还款月数〕
BigDecimal secondPart = ratex.subtract(new BigDecimal(1));// 〔(1+月利率)^还款月数-1〕
BigDecimal money = firstPart.divide(secondPart, 9, BigDecimal.ROUND_HALF_UP);// 每月月供
BigDecimal pay = new BigDecimal(0);//已还金额
BigDecimal surplus = new BigDecimal(0);//剩余
BigDecimal lixi = money.multiply(new BigDecimal(req.getYear() * 12)).subtract(apply);//总利息=还款月数×每月月供额-贷款本金
BigDecimal sum = apply.add(lixi);//本息合计
BigDecimal avgMonthPay = sum.divide(new BigDecimal(req.getYear() * 12), 2, BigDecimal.ROUND_HALF_UP);
data.put("lixi", lixi);//总利息
data.put("sum", sum);//本息合计
data.put("avgMonthPay", avgMonthPay);//月均还款BigDecimal monthPrincipal = new BigDecimal(0);
BigDecimal monthlixi = new BigDecimal(0);List<FundInfo> fundInfo = new ArrayList<FundInfo>();
for(int i=1; i<13; i++){//i代表第几月BigDecimal a = apply.multiply(monthRate);//贷款本金×月利率
BigDecimal b = rate.pow(i - 1);//(1+月利率)^(还款月序号-1)//每月应还本金=贷款本金×月利率×(1+月利率)^(还款月序号-1)÷〔(1+月利率)^还款月数-1〕
//每月应还本金=a×b÷secondPart
monthPrincipal = a.multiply(b).divide(secondPart, 2, BigDecimal.ROUND_HALF_UP);
//每月应还利息=贷款本金×月利率×〔(1+月利率)^还款月数-(1+月利率)^(还款月序号-1)〕÷〔(1+月利率)^还款月数-1〕
//每月应还利息=a×〔ratex-b〕÷〔secondPart〕
monthlixi = a.multiply((ratex.subtract(b))).divide(secondPart, 2, BigDecimal.ROUND_HALF_UP);pay = pay.add(monthPrincipal);//已还金额累计
surplus = apply.subtract(pay);//剩余FundInfo info = new FundInfo();
info.setSurplus(surplus);//剩余本金
info.setMonthlixi(monthlixi);//当期利息
info.setMonthPrincipal(monthPrincipal);//当期本金
info.setMonthPay(monthPrincipal.add(monthlixi));//当期月供
fundInfo.add(info);
}
data.put("infos", fundInfo);//剩余
data.put("loan", apply);//贷款总额}else if(req.getType() == 1){//按贷款金额
/**
* 方式二:每月递减还款(等额本金)-----每月月供额=(贷款本金÷还款月数)+(贷款本金-已归还本金累计额)×月利率
*/
BigDecimal apply  = req.getMoney().multiply(new BigDecimal("10000")); // 总贷款(万元)----转换为元
BigDecimal monthRate = req.getRate().divide(new BigDecimal(100 * 12), 6, BigDecimal.ROUND_UP);// 月利率, 保留6位小数
BigDecimal avg = apply.divide(new BigDecimal(req.getYear() * 12) , 2, BigDecimal.ROUND_HALF_UP);// 月均本息 == (贷款本金÷还款月数)
BigDecimal pay = new BigDecimal("0");//已还款金额,首月设为0
BigDecimal result = new BigDecimal("0");//首月月供
BigDecimal surplus = apply;//剩余
BigDecimal monthDec = apply.multiply(monthRate).divide(new BigDecimal(req.getYear() * 12), 2, BigDecimal.ROUND_UP);//每月月供递减额=每月应还本金×月利率=贷款本金÷还款月数×月利率data.put("monthDec", monthDec);//每月递减(利息每月递减)//月供本金=贷款本金÷还款月数
BigDecimal monthPrincipal = apply.divide(new BigDecimal(req.getYear() * 12), 2, BigDecimal.ROUND_HALF_UP);
BigDecimal monthlixi = (apply.subtract(pay)).multiply(monthRate);// 利息=(贷款本金-已归还本金累计额)×月利率
data.put("monthPrincipal", monthPrincipal);//月供本金List<FundInfo> fundInfo = new ArrayList<FundInfo>();
for(int i=0; i<12; i++){
BigDecimal benjin = avg.add(avg.multiply(new BigDecimal(i)));//已还本金
surplus = apply.subtract(benjin); //剩余本金
BigDecimal lixi = monthlixi.subtract(monthDec.multiply(new BigDecimal(i)));//每月递减后的利息
result = avg.add(lixi); // 首月月供
pay = benjin.add(benjin.multiply(new BigDecimal(i)));//已还本金FundInfo info = new FundInfo();
info.setMonthlixi(lixi);//偿还利息
info.setMonthPrincipal(monthPrincipal);//偿还本金
info.setSurplus(surplus);//剩余本金
info.setMonthPay(lixi.add(monthPrincipal));//当期月供
fundInfo.add(info);}
data.put("infos", fundInfo);//月供BigDecimal totallixi = new BigDecimal("0");//总利息
BigDecimal sum = new BigDecimal("0");//本息合计
BigDecimal avgPay = new BigDecimal("0");for(int i=0; i<req.getYear() * 12; i++){
BigDecimal li = monthlixi.subtract(monthDec.multiply(new BigDecimal(i)));//总利息
totallixi = totallixi.add(li);
sum = apply.add(totallixi);//本息合计
avgPay = sum.divide(new BigDecimal(req.getYear() * 12), 2, BigDecimal.ROUND_HALF_UP);}
data.put("lixi", totallixi);//总利息
data.put("sum", sum);//本息合计
data.put("avgMonthPay", avgPay);//平均月供
data.put("loan", apply);//总贷款}else if(req.getType() == null){
//不做任何操作
}

房贷计算器移动端接口相关推荐

  1. Windows phone7 软件发布:理财计算器(包括wp7房贷计算器,wp7个税计算器,wp7存款利息计算器)...

    前一段时间,需要经常用到贷款计算器的功能,这样有利于我们做出更好的决策.但是我们只能通过银行的工作人员的计算器来计算,给我带来了极大的不便和损失,由此便萌生了开发一个Windows phone7版的贷 ...

  2. JavaScript:综合案例---房贷计算器的实现

    房贷计算器的实现 (可以使用的编辑器:webStrom.subLime.notePad++.editPlus) 输入数据: 平方单价 70,000.00 元/平方  B1 租金 382.50 元/平方 ...

  3. 聚播微信多开客服系统二次开发SDK服务端接口

    聚播微信多开客服系统二次开发SDK服务端接口 case HeartBeatReq: {// 客户端发送的心跳包heartBeatReqHandler.handleMsg(ctx, msgVo);bre ...

  4. 一个简单的房贷计算器设计

    很多人在购买房子时,需要提前去估计各种贷款的利息,以便设计更为合理的贷款方式.本次大作业要求完成一个房贷设计器的设计,具体要求如下: 1.请使用QT或者其他类似的界面库设计人机交互界面,要求界面友好, ...

  5. Java实现:房贷计算器 (关键词:公积金、首付、等额本息、等额本金)

    1 背景:房贷计算器 目前现有的网页 房贷计算器,多多少少有点不符合自己需求,因此根据房贷相关公式及 java编写一个贷款计算器现有代码,改写了符合自己要求的 房贷计算器 . 计算结果精度为小数点后2 ...

  6. 【Excel】可浮动利率(LPR)和提前还款的房贷计算器

    1 灵感来源 网上有现成的计算器,为什么还要自己做? 因为网页版的房贷计算器看不到过程,不知其所以然,不知道能不能完全信任. 加上朋友咨询提前还款的问题,又LPR开始执行,从现实和书里汲取了灵感,开始 ...

  7. java 房贷计算器代码_用JAVA编程一个房贷计算器

    求一房贷计算器java源程序 打了个电话给农行的客服(收费的),终于知道公式了..好麻烦的公式...浪费了我15分钟的电话费. 还有在写公式的过程中遇到了计算x的y次方..谁知道java里怎么计算啊? ...

  8. android算法实现房贷计算器

    说明:最近碰到一个需求,用算法手写一个房贷计算器,包括等额本金和等额本息,花了一天实现了这个功能,源码全部贴出来了,计算公式也在代码里,需要请自取 icon: step1: package com.e ...

  9. uniapp 做的一个房贷计算器

    在支付宝的文档中找到一个比较详细的公式 等额本息计算公式 每月还款额=贷款本金×[月利率×(1+月利率)^还款月数]÷[(1+月利率)^还款月数-1]总支付利息:总利息=还款月数×每月月供额-贷款本金 ...

  10. 【Android笔记65】Android小案例之简易版的房贷计算器(附源代码)

    这篇文章,主要介绍如何使用Android实现一个简易版的房贷计算器小案例. 目录 一.房贷计算器 1.1.运行效果演示 1.2.前提准备 (1)等额本息和等额本金

最新文章

  1. select查询中@作用_SQL学习第四关:复杂查询
  2. C# ManualResetEvent
  3. Android -- setWillNotDraw()
  4. JSON和JSONP
  5. 对大数据知识架构的梳理
  6. MATLAB学习笔记(十八)
  7. python中实参必须是常量吗_7 python函数参数(必须参数、可变参数、关键字参数)...
  8. 根据银行卡号判断所属银行
  9. wps如何将字体竖着排列_如何在短时间内,使自己的字看起来更舒服?
  10. Flash坏块检测软件h2testw图文教程
  11. matlab求princomp,matlabprincomp用法
  12. 8.0系统手机无需Root激活XPOSED框架经验
  13. 用python写飞机大战过几天不能运行了_最近写的一个飞机大战的程序,写到一半有一个已经写好的函数但不能运用,强行运行程序秒退,百思不得其姐...
  14. java web 蓝牙打印_android 蓝牙打印机示例
  15. iOS 手势的用法
  16. 博客秘诀:超人气博客是怎样炼成的(提升博客人气不可不用的绝招)
  17. 电子元器件行业采购管理平台数字化采购,助力企业降本增效
  18. 2021-2027全球与中国超声波焊接头市场现状及未来发展趋势
  19. ESP32远程OTA指令升级bin固件
  20. 人工智能概论知识要点(七)

热门文章

  1. 第一章 由内而外全面造就自己
  2. TOM邮箱怎么样 TOM邮箱品牌测评分析
  3. 自定义安装 Microsoft Office 2019 and Active
  4. IDEA集成docker-maven-plugin配置CA安全证书
  5. C语言新手记:相反数
  6. 网络营销的方案及技巧
  7. 《太极张三丰》原声音乐 320/mp3打包下载
  8. linux mkv转mp4,Linux DVD 转 MP4 – HandBrake – Copy a DVD to MP4 or MKV file
  9. 武汉大学计算机学院周维,研究生院
  10. 网站被攻击最全面的解决方法