计算圆周率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-4/3+4/5-4/7..打印出第一个大于3.1415小于3.1416的值想问一下为什么运行没结果刚
答案:1 悬赏:80 手机版
解决时间 2021-03-21 22:39
- 提问者网友:人傍凄凉立暮秋
- 2021-03-21 16:33
最佳答案
- 五星知识达人网友:雪起风沙痕
- 2021-03-21 18:08
是进入死循环了 在你第一次进入循环的时候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); } }
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯