使用 BigDecimal 打印 Pi

Yua*_* Hu 2 java pi bigdecimal

我正在尝试使用 BigDecimal 来打印 Pi,但事实证明它不准确

    BigDecimal d = new BigDecimal(Math.PI); 
    System.out.println(d); 
Run Code Online (Sandbox Code Playgroud)

上面的答案给了我“3.141592653589793115997963468544185161590576171875”但“3.141592653589793”后面的数字不正确

这是怎么回事?我可以使用 bigdecimal 打印 PI 吗?

And*_*kin 5

来自Math.PI 的 Javadoc

PI

公共静态最终双PI

比任何其他值都更接近圆周率的双精度值,圆周长与其直径的比率。

这大致是(当打印为十进制扩展时):

3.141592653589793
Run Code Online (Sandbox Code Playgroud)

它只是一个固定的 64 位序列,代表 Pi 的近似值,它是一个硬编码的常量,保存在标准库的 JAR 中。这个64位的序列不含包含的算法,用于计算的裨数字的任意数量。

您在第 15 位之后看到的数字或多或少是伪随机垃圾。将其包裹起来BigDecimal并不会使其更精确。