生成pi到第n位java

Jee*_*hah 8 java precision pi bigdecimal

我想知道如何将pi生成到第n位.我有几个基本想法.

  1. 使用Math.PI并提高精度(如果可能的话)
  2. 使用欧拉公式生成pi,但即使在这里,我也需要提高精度(我认为) 欧拉的PI公式
  3. 还有Srinivasa Ramanujan用于生成PI的公式,该公式因其快速收敛而闻名.这个公式似乎很难实现.我相信,我还必须在这里增加deicmal精度.
    在此输入图像描述

所以简而言之,无论哪种方式,我都需要BigDecimal根据第n位数来提高精度.如何提高BigDecimal第n位的精度?此外,如果有更好更快的做法,请指点我正确的方向.

编辑:我只想生成PI.我不想用于计算.这是一个关于如何使用BigDecimal实现我生成PI的想法的问题.

Mic*_*rdt 6

  • Math.PI是类型的double.这意味着大约15个十进制数字的精度,这就是你拥有的所有数据; 什么都不会神奇地使PI的附加数字出现.
  • BigDecimal有任意精度.setScale()允许您根据需要创建BigDecimal具有尽可能高精度的对象,并且大多数算术方法将根据需要自动提高精度,但当然精度越高,所有计算都越慢.
  • 实现Ramanujan公式最困难的部分具有讽刺意味的是常数因子中的sqrt(2),因为没有内置的sqrt()BigDecimal,所以你必须自己编写.

  • @ user681159:如果你想根据一个特定的常数因子计算一个非常精确的结果,你是不是很明显,你不能用这个因子的不精确近似来做到这一点? (2认同)