-1

所以,莱布尼茨的 pi 公式是 pi/4 = 1 - 1/3 + 1/5 - 1/7 + 1/9...我不知道如何在 Java 中使用这个公式。我只需要一些关于如何将第二部分合并到其中的帮助。我知道我需要一个循环,我需要一个除数变量,并且每次都需要加 2。谢谢你的帮助。

4

2 回答 2

1

作为提示,这是一个优化版本

long start = System.nanoTime();
double pi = 0;
for (int i = 1; i < 1000000000; i += 4) {
    pi += 8.0 / (i * (i + 2L));
}
long time = System.nanoTime() - start;
System.out.println(pi + " took " + time / 1000000 / 1e3 + " secs.");

印刷

3.1415926445762157 took 1.217 secs.

如果您将此循环更改为向后而不是向前执行,您将获得更准确的结果。它更准确,因为最后添加的较大数字隐藏了较小值的一些累积舍入误差。

3.141592651589793 took 1.222 secs.

该值应为 3.14159265359

于 2013-10-01T16:48:29.227 回答
0

for循环应该是这样的:

double sum=0;
double sign=1.0;
for(int i =1;i<=limit;i+=2)
{
    sum+=sign/i;
    sign* =-1;
}
于 2013-10-01T16:42:53.920 回答