Java - 如何找到 BigDecimal 的倒数?

Java - How to find the reciprocal of a BigDecimal?

我正在尝试使用 Chudnovsky 算法计算 java 中圆周率的位数。我使用 BigDecimal 是为了尽可能精确,但公式适用于 1/pi。我想将找到的值转换为 pi/1。 我尝试使用 Math.pow() 和 BigDecimal.pow() 但无法弄清楚。 找到 BigDecimal 的倒数的最佳方法是什么? 这是我的代码:

    public static void main(String[] args)
    {
      JFrame j = new JFrame("Pi");
      j.setSize(300,100);
      j.setVisible(true);
      JTextArea jt = new JTextArea();
      Container contain = new Container();
      FastPi fp = new FastPi();
      BigDecimal pi = new BigDecimal(0);
      for(long l=0; l<Long.MAX_VALUE; l++)
      {
        pi = BigDecimal.valueOf(12*(((Math.pow(-1,l)*fp.factorial(6*l)*
                                (545140134*l+13591409))/
                                (fp.factorial(3*l)*
                                Math.pow(fp.factorial(l),3)*
                                Math.pow(640320,3*l+3/2)))));
        contain = j.getContentPane();
        // tried to do pi^-1 below this comment
        jt.setText(String.valueOf(pi.pow(-1)) + " " + l);
        contain.add(jt);
      }
    }
    public long factorial(long f)
    {
      long result = 1;
      for(int i=2; i<=f; i++)
      {
        result *= i;
      }
      return result;
    }

抱歉,我使用 L 作为变量,虽然它的颜色与 1 不同。

1 除以算法的结果,保留结果的比例:

BigDecimal inversePi = yourAlgorithm();

BigDecimal pi = BigDecimal.ONE.divide(inversePi, inversePi.scale(), RoundingMode.HALF_UP);