Pi 数计算得出 3.22
Pi Number Calculation gives 3.22
我正在尝试使用以下公式计算圆周率:
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
所以当 "step number" 趋于无穷大时它的极限是 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
。)
我正在尝试使用以下公式计算圆周率: 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
所以当 "step number" 趋于无穷大时它的极限是 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
。)