黑马程序员技术交流社区

标题: 请帮忙解决疑惑 [打印本页]

作者: 完美恋爱    时间: 2013-11-8 15:45
标题: 请帮忙解决疑惑
本帖最后由 完美恋爱 于 2013-11-8 19:42 编辑

22、有一分数序列2/1,3/2,5/3,8/5,13/8,21/13,……
        求出这个数列的前20项之和。
class ABC{                            public static void main(String[] args)      
                    {               
                                   int a = 2;               
                                   int b = 1;                                
                                   int p = 0;               
                                   int q = 0;                                
                                   double sum = a/b;                              
                                   for(int i = 1; i <= 18; i++)               
                                   {                        
                                                p = a + b;                       
                                                q = a;                                                      
                                                sum = sum + p/q;               
                                  }                              

                                  System.out.println("sum = "+sum);        
                   }
}


请问我编写的代码哪里有错误了,为什么得数跟我用计算器加的数不一样呢?




作者: ~﹏~    时间: 2013-11-8 15:53
你可以先试着求前三项或者前五项之和,
你用计算器加二十项觉得会出错的
因为计算器会将结果进行精度处理的。
  1. public static void main(String[]args){
  2.         int b = 2;
  3.         int a = 1;
  4.         double sum = 0;
  5.         for(int i = 0;i < 20;i++){
  6.             if(i%5 == 0){
  7.                 System.out.println();
  8.                 System.out.print(b+"/"+a+"+");
  9.                 int temp = 0;
  10.                 sum += b/a;
  11.                 temp = a;
  12.                 a = b;
  13.                 b = temp + b;
  14.             }else if(i == 19){
  15.                 System.out.print(b+"/"+a+"=");
  16.                 int temp = 0;
  17.                 sum += b/a;
  18.                 temp = a;
  19.                 a = b;
  20.                 b = temp + b;
  21.             }else{
  22.                 System.out.print(b+"/"+a+"+");
  23.                 int temp = 0;
  24.                 sum += b/a;
  25.                 temp = a;
  26.                 a = b;
  27.                 b = temp + b;
  28.             }
  29.         }
  30.         System.out.println(sum);
  31.     }
  32. }
复制代码

作者: 麦者    时间: 2013-11-8 15:55
21/13 这些数算出来的是1啊




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2