我正在尝试使用以下公式计算圆周率: pi/4 = 1 - 1/3 + 1/5 - 1/7 + 1/9 ...
public class Calculator
{
double process=1;
double piValue=0;
int approximation;
double value;
public Calculator( int precision)
{
approximation = precision;
}
public void calculate()
{
while(process<=approximation)
{
value = 1/(process+2);
if(process%2==0)
{
value = value;
}
else
{
value = value * (-1);
}
piValue = piValue + value;
process++;
}
System.out.println((1+piValue)*4.0);
}
}
我在这里没有发现任何问题,但我一直得到非常无意义的输出。以下是一些示例:
23. step: 3.1490100018286853 This is OK.
1501. step: 3.22874239242146
100,000 step: 3.2274312772602247
因此,当“步数”趋于无穷大时,它的极限约为 3.22 。我该如何解决这个问题?
我刚开始学习Java,请记住这一点。
提前致谢。
最佳答案
在while
循环的顶部计算value
时,您对process
的使用不正确;你最终会计算出 -1/3 + 1/4 - 1/5 + ....
代替
value = 1/(process+2);
尝试
value = 1/(2*process + 1);
现在这将从 3
开始将分母增加奇数,这没问题,因为您在最后添加了 1
。
通过此更改和 1,501 次循环,我得到 3.1409268747021875
- 与这种计算圆周率的方法非常接近。 (100,000 次循环打印 3.141602653489781
。)
关于java - Pi 数计算得出 3.22,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36068178/