我正在尝试使用以下公式计算pi数: 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,请记住。
提前致谢。
答案 0 :(得分:5)
在value
循环顶部计算while
时,您对process
的使用不正确;你最终计算-1/3 + 1/4 - 1/5 + ....
而不是
value = 1/(process+2);
试
value = 1/(2*process + 1);
现在这将以3
开头的奇数推进分母,这是好的,因为你在最后添加了1
。
通过这个改变和1,501个循环,我得到3.1409268747021875
- 非常接近这种计算pi的方法。 (100,000个循环打印3.141602653489781
。)