A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张天强 初级黑马   /  2012-6-11 01:12  /  2327 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

有人要利用分期付款的方式买一辆价值5万元的汽车。如果月利率为0.8%,请你编程帮他算一下,如果一年内分6次付清款项,每月需要付款多少,到付清款为止,她应该一共付款多少,与一次性付清比要多付款多少?

3 个回复

倒序浏览
不是很理解这道题目不知道对不对
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;
        }
}
回复 使用道具 举报
这哪是一道编程题嘛,这分明是一道数学题呀,由于没有买过车,我也不是很清楚,这个利息是怎么算的,但是我觉得不会像楼上算的那么简单,我最后算的好像是要换多还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: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
下面是代码示例:
  1. class ChuShiDemo
  2. {
  3. public static void main(String[] args)
  4. {

  5. double sum =getAll(50000,0.008,6);
  6. System.out.println("还款总金额为: "+sum);
  7. }
  8. /**
  9. num 定义需要操作的金额数
  10. rate 定义利率
  11. month 定义还款月数
  12. */
  13. public static double getAll(double num,double rate,int month)
  14. {
  15. double result = 0;
  16. double sum = 0;
  17. for (int i=1,j=month; i<=month ;i++,j-- )
  18. {
  19. double r = get(i,0.008,month);
  20. //System.out.println(r);
  21. result = (num * r);
  22. System.out.println("每个月应该还钱的数额为: "+result);
  23. sum+=result;
  24. }
  25. return sum;
  26. }


  27. //获取每次 money 应该乘以的数
  28. public static double get(int m,double rate,int month)
  29. {
  30. double num = 1;
  31. for (int i=m ; i>0 ;i--)
  32. {
  33. num = num*(1+rate);
  34. }
  35. return num/month;
  36. }
  37. }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马