我写的程序如下:
public class szhi{
public  static void main(String args[])
{ double s=2,sum=0;
  int n=1;
 for(n=1;n<=100;n++)
 {
   if(n%2==0)
   {s=-1/n;}
   else
   {s=1/n;}
    sum=sum+s;
}
System.out.println(sum);}
}输出的结果是 1.0
当我把程序改成如下时结果正确:
public class szhi{
public  static void main(String args[])
{ double s=2,sum=0;
  int n=1;
 for(n=1;n<=100;n++)
 {
   if(n%2==0)
   {s=(double)-1/n;}
   else
   {s=(double)1/n;}
    sum=sum+s;
}
System.out.println(sum);}
}
难到一定要进行强制转换吗?
不是说 int能自动向double转换吗?为什么要人为强制转换呢?
谢谢 说明~

解决方案 »

  1.   

    下面是我的另一个书写形式:
    public class szhi{
    public  static void main(String args[])
    { double s=0,sum=0;
      int n=1;
     for(n=1;n<=100;n++)
     {  if(n%2==0)
        {s=-1.0/n;}
       else
         {s=1.0/n;}
      sum=sum+s;
      }
    System.out.println(sum);}
    }
    那 程序中的1.0 和上面程序中的double的作用是一样的吗?
    他们有什么区别?
      

  2.   

    你写 s=-1.0/n 或者 s=1.0/n 就自动了
      

  3.   

     我记得应该写成 1d或者 1.0d  当然1.0也性d就是double的意思 数字后加f就是单精度的意思
      

  4.   

    整数除整数还是整数  和double不能%(取余数)一个道理
      

  5.   

    因为1,-1,n都是整形,并且优先级高,所以先进行取整运算,自动舍弃小数点,然后再转为double型