作业帮 > 综合 > 作业

计算圆周率PI=4-4/3+4/5-4/7..打印出第一个大于3.1415小于3.1416的值想问一下为什么运行没结果刚

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/13 00:41:09
计算圆周率PI=4-4/3+4/5-4/7..打印出第一个大于3.1415小于3.1416的值想问一下为什么运行没结果刚学java
是不是死循环了
 
public class PI
{
public static void main(String[] args)
{
 double PI=0;
  int n=1;
 while(PI<=3.1415||PI>=3.1416);
  {
   PI-=(4/(2*n-1))*((-1)^n);
   n++;
 }
 System.out.println("圆周率是:"+PI);
}

 
}
 
 
 
 
是进入死循环了 在你第一次进入循环的时候PI就变成4了 然后你明白了吧 以后就无限循环了
再问: 再说深一步吧,我还是不怎么明白。当PI变成4时 n就是2 然后公式就变成 PI=4-(4/(2*2-1))*((-1)^2) . PI=4-4/3 PI=4-4/3+4/5-4/7...然后是一直递减下去的 怎么就进了死循环了
再答: 哎呀 我没看清 PI 是一直变小的呀 问题是((-1)^n) 你知道运行结果是啥不 ^这个符号是异或 不是平方 平方运算是Math.pow(-1,n) 还有你检查下公式和数据类型也不对 首先n是int型 那么4/(2n-1) 会隐式类型准换类型为int 也就是 4/3 得到的结果是1 4/5 得0 那么结果就会是PI的值就是 PI=4 PI=4-4/3=4-1=3 PI=3-3/4=3-0=3 . . .PI永远为3 进入死循环 正确代码为 public class PI { public static void main(String[] args) { double p=0; double n=1; while(p=3.1416) { p-=(4/(2*n-1))*(Math.pow(-1,n)); n++; } System.out.println("圆周率是:"+p); } }