关于java:有没有更有效的方法来计算pi?

Is there a more efficient way to calculate pi?

我昨天开始学习Java。因为我知道其他编程语言,所以我更容易学习Java。其实很酷。我还是喜欢Python:)总之,我写了这个程序来计算基于算法的π(π=4/1-4/3+4/5-4/7….),我知道有更有效的计算π的方法。我该怎么做呢?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import java.util.Scanner;

public class PiCalculator
{
  public static void main(String[] args)
  {
    int calc;
    Scanner in = new Scanner(System.in);
    System.out.println("Welcome to Ori's Pi Calculator Program!");
    System.out.println("Enter the number of calculations you would like to perform:");
    calc = in.nextInt();
    while (calc <= 0){
      System.out.println("Your number cannot be 0 or below. Try another number.");
      calc = in.nextInt();
    }
    float a = 1;
    float pi = 0;
    while (calc >= 0) {
      pi = pi + (4/a);
      a = a + 2;
      calc = calc - 1;
      pi = pi - (4/a);
      a = a + 2;
      calc = calc - 1;
    }
    System.out.println("Awesome! Pi is" + pi);
  }
}

经过1000000次计算,该代码的结果仍然是3.1415954。必须有一种更有效的方法来做到这一点。

谢谢!


在Java中计算PI的最有效的方法是根本不计算它:

1
System.out.println("Awesome! Pi is" + Math.PI);

虽然你的问题还不清楚,但我猜你实际上是在做运动。在这种情况下,您可以尝试nilakantha系列:

1
2
3
4
float pi = 3;
for(int i = 0; i < 1000000; i += 2) {
    pi += 4 / (float) (i * (i + 1) * (i + 2));
}

更有效和准确的是Machin的公式:

1
float pi = 4f * (4f * Math.atan(5) - Math.atan(239)) / 5f;