有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java如何找到一个大十进制数的倒数?

我试图用Chudnovsky算法在java中计算pi的位数。我使用BigDecimal尽可能精确,但公式是1/pi。我想将我找到的值转换为pi/1。 我试着用数学。pow()和BigDecimal。pow(),但无法理解它。 求一个大十进制数的倒数最好的方法是什么? 这是我的密码:

    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) 个答案

  1. # 1 楼答案

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

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