逆推算法demo
作者:bin逆推算法
一个实例,不能用明推时,可以考虑用逆推的方式
/** * 逆推算法 * 母亲为儿子准备大学4年的生活的存款,方式是「整存零取」, * 母亲一次全存进去,儿子每个月定时取1000快。 * 假设银行利息年华是3%,那么要存多少钱进去,才够儿子每个月取着用。 * * 思路:可以确定最后一个月钱为1000 * 假设上个月的钱是A,那么 1000 = A + (A * 0.03/12) - 1000 * 即 [剩余] = [上月剩余] + (上月剩余 * 利息) - 每月取的 */ @Test public void testHexToBase64s(){ Integer totalMonth = 47; //月 Double rate = 3.00; //利率 Double rates = (rate * 0.01 / 12) + 1; //被除数 BigDecimal b1 = new BigDecimal(rates.toString()); Double last = 1000.00; //每个月的钱 List<Double> months = Lists.newArrayList(); months.add(last); for (int i = 0; i < totalMonth; i++) { BigDecimal b2 = new BigDecimal(last); //获取上个月的钱 BigDecimal beforeMonth = b2.divide(b1,2, BigDecimal.ROUND_HALF_UP); last = beforeMonth.doubleValue() + 1000L; months.add(last); } System.out.println(months); }