我写了一个计算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的输出会发生显着变化。 这是一个完整的清单:
另外,我是否正确使用scale
10
进行此计算以获得最高精度?
谢谢。
修改
将Scale
更改为100; Pi给100dp。等
答案 0 :(得分:4)
首先,仔细阅读Javadoc。它包含很多示例,每个RoundingMode的工作原理。
在真正的数学中,我们通常是HALF_UP,因为这就是教师在学校教我们的方式。 5.5舍入到6. 5.4舍入到5.
答案 1 :(得分:-1)
无。如果您将PI计算为大量小数位,则根本不应该进行舍入或缩放。你的问题没有意义。