黑马程序员技术交流社区
标题: java 分期计算 [打印本页]
作者: 张天强 时间: 2012-6-11 01:12
标题: java 分期计算
有人要利用分期付款的方式买一辆价值5万元的汽车。如果月利率为0.8%,请你编程帮他算一下,如果一年内分6次付清款项,每月需要付款多少,到付清款为止,她应该一共付款多少,与一次性付清比要多付款多少?
作者: 江南 时间: 2012-6-11 01:32
不是很理解这道题目不知道对不对
public class MoneyReturn{
public static void main(String[] args) {
MoneyReturn moneyReturn = new MoneyReturn();
System.out.println("您会多还款"+(moneyReturn.counte(50000, 0.008, 6)-50000));
}
public double counte(double price,double monthRate,int times){
double money = price;
for(int i= 0;i< times;i++ ){
money = money*monthRate+money;
}
return money;
}
}
作者: 一生一世 时间: 2012-6-11 08:04
这哪是一道编程题嘛,这分明是一道数学题呀,由于没有买过车,我也不是很清楚,这个利息是怎么算的,但是我觉得不会像楼上算的那么简单,我最后算的好像是要换多还3320呢(不是利滚利的情况下) 这道题的算术表达式为:5*0.8%+(5-5/6)*0.8%+(5-5/6*2)*0.8% 。。。。+(5-5/6*5)*0.8%=3320
个人之见,仅供参考
作者: 吴小东 时间: 2012-6-11 16:23
本帖最后由 吴小东 于 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;
- }
- }
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |