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

    BigDecimal d = new BigDecimal(Math.PI);
    System.out.println(d);


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

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

最佳答案

Javadoc for Math.PI


  PI
  
  公共静态最终双PI
  
  一个比pi更近的double值,即圆周长与其直径之比。


大致来说(当打印为十进制扩展名时):

3.141592653589793


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

在第15位之后看到的数字或多或少是伪随机垃圾。将其包装为BigDecimal不会使其更加精确。

关于java - 使用BigDecimal打印Pi,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48958077/

10-12 15:34
查看更多