public class Nu {
   public static void main(String args[])
   {
   int m=1,n;
   float i,sum=0;
  for(n=1;n<=20;n++)
   { m=m*n;
   i=1/m;
   sum=sum+i;
   }
  if(n>=20)
   
    System.out.print(sum);
   }
}
我写成这个样子,可是输出为1.0,一直找不到错在哪里,高手们指教阿。

解决方案 »

  1.   

    i=1/m; 改为 i = 1.0F / m; 就可以了。因为 1 和 m 是 int 类型的,只有第一次是“1”,以后 m > 1,所以 1/m 的结果是“0”。
      

  2.   

    public class Nu
    {
        public static void main(String args[])
        {
            float sum = 0f,i=1f;
            for (int n = 1; n <= 20; n++) {
                
                sum = sum + i / factorial(n);
            }
            System.out.print("SUM="+sum);
        }    public static int factorial(int ok)
        {
            int sum = 1;
            for (int i = 1; i < ok + 1; i++) {
                sum = sum * i;
            }
            return sum;
        }
    }
    float的长度已经不能体现出10-20的值变化
      

  3.   

    把m 定义成浮点型
    public class Nu { 
       public static void main(String args[]) 
       { 
       int n; 
       double i,m=1.0,sum=0.0; 
      for(n=1;n <=20;n++) 
       { m=m*n; 
       i=1 / m;
       //System.out.println(i);
       sum=sum+i; 
     
       } 
      if(n >=20)     System.out.print(sum); 
       }