public class Interest {

private ExpressRunner runner = new ExpressRunner();

public void initial() throws Exception{
runner.addFunctionOfClassMethod("等本等息", Interest.class.getName(), "method1",new Class[] {double.class,double.class,int.class}, null);
runner.addFunctionOfClassMethod("等额本息", Interest.class.getName(), "method2",new Class[] {double.class,double.class,int.class}, null);
runner.addFunctionOfClassMethod("等额本金", Interest.class.getName(), "method3",new Class[] {double.class,double.class,int.class}, null);
}

public static void main(String[] args) throws Exception {
Interest indemo = new Interest();
indemo.initial();
Object r = indemo.runner.execute("等本等息(1000,0.008,12)", null, null, false, true);
System.out.println(r);
Object r2 = indemo.runner.execute("等额本息(1000,0.008,12)", null, null, false, true);
System.out.println(r2);
Object r3 = indemo.runner.execute("等额本金(1000,0.008,12)", null, null, false, true);
System.out.println("等额本金每个月的还款列表"+r3);
}

/**
* 等本等息还款方式计算每个月偿还本金和利息
* @param invest
* @param yearRate
* @param totalMonth
* @return
*/
public String method1(double invest,double yearRate,int totalMonth) {
double d = invest/totalMonth + invest*yearRate/totalMonth;
return "等本等息方式每个月应还款"+d;
}

/**
* 等额本息还款方式计算每月偿还本金和利息
* @param invest
* @param yearRate
* @param totalMonth
* @return
*/
public String method2(double invest, double yearRate, int totalMonth) {
double monthRate = yearRate / 12;
BigDecimal monthIncome = new BigDecimal(invest).multiply(new BigDecimal(monthRate * Math.pow(1 + monthRate, totalMonth))).divide(new BigDecimal(Math.pow(1 + monthRate, totalMonth)-1),2,BigDecimal.ROUND_DOWN);
return "等额本息方式每个月应还款"+monthIncome.doubleValue();
}

public Map<Integer, Double> method3(double invest, double yearRate, int totalMonth) {
Map<Integer, Double> map = new HashMap<Integer, Double>();  
        // 每月本金  
        double monthPri = getPerMonthPrincipal(invest, totalMonth);  
        // 获取月利率  
        double monthRate = yearRate / 12;  
        monthRate = new BigDecimal(monthRate).setScale(6, BigDecimal.ROUND_DOWN).doubleValue();  
        for (int i = 1; i <= totalMonth; i++) {  
            double monthRes = monthPri + (invest - monthPri * (i - 1)) * monthRate;  
            monthRes = new BigDecimal(monthRes).setScale(2, BigDecimal.ROUND_DOWN).doubleValue();  
            map.put(i, monthRes);  
        }  
        return map;  
}

/**  
     * 等额本金计算获取还款方式为等额本金的每月偿还本金  
     *   
     * 公式:每月应还本金=贷款本金÷还款月数  
     *   
     * @param invest  
     *            总借款额(贷款本金)  
     * @param yearRate  
     *            年利率  
     * @param month  
     *            还款总月数  
     * @return 每月偿还本金  
     */  
    public static double getPerMonthPrincipal(double invest, int totalMonth) {  
        BigDecimal monthIncome = new BigDecimal(invest).divide(new BigDecimal(totalMonth), 2, BigDecimal.ROUND_DOWN);  
        return monthIncome.doubleValue();  
    }

}

QLExpress计算等本等息、等额本息、等额本金相关推荐

  1. LPR/IRR/APR/PMT/PV/FV区分,excel中PMT/PV/FV运用,等额本息/等额本金excel计算器

    一.IRR/ARR,PV/NPV/FV.PMT/PPMT/IPMT.LPR基础含义 1.LPR.IRR/ARR/EAR.APR. (1)LPR 英文释义 Loan Prime Rate,指贷款市场报价 ...

  2. 房贷还款方式等额本息等额本金比较和这两种提前还款的区别

    计算规则数据:贷款总额80万,年限30年,商贷利率5.44 (实际5.4%先按5.44模拟计算) 等额本息: 每月还款:4512.24元 利息总额82.44万元 还款总额:162.44万元 月供总额不 ...

  3. 购房贷款 等额本息 等额本金

    购房贷款主要有两种方式:等额本息贷款和等额本金贷款.这两种方式最大的不同在于计算利息的方式不同.前者采用的是复合方式计算利息(即本金和利息都要产生利息),后者采用简单方式计算利息(即只有本金产生利息) ...

  4. Java根据日利率计算等额本息每月还款

    问题描述 等额本息分期贷款,大多数时候借款日和还款日不一定相同(例如支付宝借呗),并且每期(每月)天数不同,比如二月份是28天,29天,其他月份有31天或者30天,此时产生的一个问题就是每期的还款日相 ...

  5. 银行贷款等额本息,等额本金计算

    等额本息: /**** @param 本金 单元(元) 1000000(一百万)* @param 年利率 0.0635(6.35%)* @param 还款期限 单元(年) 10(10年)*/publi ...

  6. Java计算等额本金和等额本息

    Java计算等额本金和等额本息 等额本金 等额本息 等额本金 /*** 等额本金是指一种贷款的还款方式,是在还款期内把贷款数总额等分,每月偿还同等数额的本金和剩余贷款在该月所产生的利息,这样由于每月的 ...

  7. 房贷利率有无套路?Python解读“等额本金与等额本息”的差异所在

    作者 | xiaoyu 来源 | Python数据科学 很多朋友留言说不知道房贷利率的不同归还方式是不是有套路,内心深表疑虑.我的第一反应是因为房贷很高,大家看到消费分期的套路自然而然就想到了房贷,很 ...

  8. python等额本息和等额本金_用Python解读房贷利率,要不要看随你

    可能很多买过房.贷过款的朋友大概都知道怎么回事,但是我相信大部分人也没细研究过,而绝大部分人买房时更是任由房屋中介摆布,因为给了中介费相信他们可以算的明明白白,自己也就不过多深究了.但我觉得买房不是小 ...

  9. 用python实现等额本息

    Python实现等额本息 1.等额本息 等额本息下,每个月还款的本金+利息的总额是相等的,或者说,用户还款时只知道每个月还款额相等,并不关心还了多少本金和利息.这种还款方式同样适用于收入稳定的人群. ...

最新文章

  1. 地球是否健康,最新“诊断报告”来了
  2. 九度OJ 1336:液晶屏裁剪 (GCD)
  3. android读取assets中的html文件,android读取assets文件.htm
  4. C/C++知识分享:C++常用内置函数你会几个,使用过几次呢?
  5. C/C++日志写入系统log(/var/log/syslog)
  6. RHEL5下构建Snort网络***检测系统
  7. 38. 遵循按照值传递的原则来设计函数子类
  8. vector插入和删除操作
  9. 多选框取值和默认勾选
  10. Android Audio - HAL 层多声卡同时录音框架设计(多语言)
  11. 开源开放|数据地平线通过OpenKG开放全行业因果事理、大规模实时事理等7类常识知识库...
  12. 信阳市少年计算机学校,信阳市胜利路学校开展少年之声小记者选拔活动
  13. oracle loop面试题,oracle存储过程面试题
  14. react加水印_多功能React影像组件(拖拽、水印、缩放、切换、旋转)
  15. 键盘+moveit+rviz 控制六轴机械臂(仿真)
  16. OpenPLC61850: An IEC 61850 MMS compatible open source PLC for smart grid research
  17. javaWeb10(ckeditorsmartupload)
  18. 实得打印机色带芯更换
  19. OpenCV:将视频流式传输到网页浏览器/HTML页面
  20. 火狐浏览器(firefox)如何定制特定的“新建标签页”

热门文章

  1. Godaddy域名如何使用DNSPod做DNS解析
  2. Grbl v1.1版本的编译方法
  3. OverTheWire的bandit游戏1
  4. xp访问win10计算机名,如果xp连接到win10共享打印机并提示输入凭据不足怎么办
  5. 修改html文件500错误信息,打开网页提示 HTTP500错误的终极解决方法
  6. ICP算法概述以及使用SVD进行算法推导
  7. 迅捷在线压缩有什么办法可以压缩视频
  8. redis.set方法详解
  9. 开发一款游戏so easy教你如何识别靠谱的游戏外包公司
  10. 一个优秀IT专家的成长历程-献给所有的颓废或即将颓废的人们