RoundingMode最准确的枚举常量(用Java计算Pi)

时间:2013-08-08 20:29:42

标签: java enums constants

我写了一个计算Pi的程序。 它使用double类型,因此在这种情况下,它自然只计算Pi最多16个小数位。

我正在尝试允许我的代码采用BigDecimals类型,因此我可以将Pi计算为更精确的数字(即更多的小数位)。

我可以看到我的进展>> here <<

我正在使用Madhava–Leibniz series来计算Pi:

     Pi = 4/1 + (-4/3) + 4/5 + (-4/7) + 4/9 + ... + 4/n

在我的课程中,我做了这样一个部门:

     currentTerm=(double)-4/oddTerm;

在我更新的代码中,我已将其更改为:

    currentTerm = neg.divide(oddTerm, 10, RoundingMode.HALF_UP);

我希望能给你一个想法或者发生了什么。

我的问题是,在这个例子中, RoundingMode 枚举常量最适合使用(或更准确?)... 显然,如果我使用不同的输出,Pi的输出会发生显着变化。 这是一个完整的清单:

Java Doc Table

另外,我是否正确使用scale 10进行此计算以获得最高精度?

谢谢。

修改Scale更改为100; Pi给100dp。等

2 个答案:

答案 0 :(得分:4)

首先,仔细阅读Javadoc。它包含很多示例,每个RoundingMode的工作原理。

在真正的数学中,我们通常是HALF_UP,因为这就是教师在学校教我们的方式。 5.5舍入到6. 5.4舍入到5.

答案 1 :(得分:-1)

无。如果您将PI计算为大量小数位,则根本不应该进行舍入或缩放。你的问题没有意义。