日期:2014-05-20  浏览次数:20624 次

为什么得不到正确的结果
我写的程序如下:
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转换吗?为什么要人为强制转换呢?
谢谢 说明~

------解决方案--------------------
我记得应该写成 1d或者 1.0d 当然1.0也性

d就是double的意思 数字后加f就是单精度的意思