本帖最后由 吴小东 于 2012-6-11 16:29 编辑
以前好像算过类似的题目 当第一个月开始还钱的时候 总数是 5+5*0.8% 以下用money表示
第一个月的还钱数为 (money) /6 则为 money*(1+0.8%)/6
第一个月还钱完之后剩余的钱为 (money) *5 /6
那么到第二月还钱的时候总数为 (money) *5 /6+((money) *5 /6)*0.8% ----> money*(1+0.8%)*5/6 以下用money1表示
第二个月的还钱数为 (money1) /5 则为 money*((1+0.8%)\的2次方)*5/6/5 --->money*((1+0.8%)\的2次方)/6
第二个月还钱完之后剩余的钱为 (money1) *4 /5
那么到第三月还钱的时候总数为 (money1) *4 /5+((money1) *4 /5)*0.8% ---> money1*(1+0.8%)*4/5 (money*(1+0.8%)*5/6)*(1+0.8%)*4/5
----> money*((1+0.8%)\的2次方)*5/6*(4/5) 以下用money2表示 第三个月的还钱数为 (money2) /4 则为 money*((1+0.8%)\的3次方)*5/6*(4/5)*(1/4) ----->money*((1+0.8%)的3次方)/6
通过上面的演算可以看出我们把 (1+0.8%) 看着一个基数用 rate 表示 第一个月总还钱数为 money * rate的 0次方/6
第二个月总还钱数为 money * rate的 1次方/6
第三个月总还钱数为 money * rate的 2次方/6
依次类推就能得出结果,代码就很简单了吧
输出结果如下:
每个月应该还钱的数额为: 8400.0
每个月应该还钱的数额为: 8467.2
每个月应该还钱的数额为: 8534.937600000001
每个月应该还钱的数额为: 8603.217100800002
每个月应该还钱的数额为: 8672.042837606401
每个月应该还钱的数额为: 8741.419180307254
还款总金额为: 51418.81671871366
下面是代码示例:- class ChuShiDemo
- {
- public static void main(String[] args)
- {
- double sum =getAll(50000,0.008,6);
- System.out.println("还款总金额为: "+sum);
- }
- /**
- num 定义需要操作的金额数
- rate 定义利率
- month 定义还款月数
- */
- public static double getAll(double num,double rate,int month)
- {
- double result = 0;
- double sum = 0;
- for (int i=1,j=month; i<=month ;i++,j-- )
- {
- double r = get(i,0.008,month);
- //System.out.println(r);
- result = (num * r);
- System.out.println("每个月应该还钱的数额为: "+result);
- sum+=result;
- }
- return sum;
- }
- //获取每次 money 应该乘以的数
- public static double get(int m,double rate,int month)
- {
- double num = 1;
- for (int i=m ; i>0 ;i--)
- {
- num = num*(1+rate);
- }
- return num/month;
- }
- }
复制代码 |