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

计算圆周率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);
}


}



因为心碎所以喝醉 1年前 已收到2个回答 举报

cc妖 幼苗

共回答了13个问题采纳率:100% 举报

是进入死循环了 在你第一次进入循环的时候PI就变成4了 然后你明白了吧 以后就无限循环了

1年前 追问

9

因为心碎所以喝醉 举报

再说深一步吧,我还是不怎么明白。当PI变成4时 n就是2 然后公式就变成 PI=4-(4/(2*2-1))*((-1)^2) . PI=4-4/3 PI=4-4/3+4/5-4/7...然后是一直递减下去的 怎么就进了死循环了

举报 cc妖

哎呀 我没看清 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.1415||p>=3.1416) { p-=(4/(2*n-1))*(Math.pow(-1,n)); n++; } System.out.println("圆周率是:"+p); } }

jjhz 幼苗

共回答了4个问题 举报

因为π是无限不循环小数,你要指定循环次数

1年前

2
可能相似的问题
Copyright © 2024 YULUCN.COM - 雨露学习互助 - 19 q. 0.013 s. - webmaster@yulucn.com