我写了一个小程序来用 Java 计算 Pi。
我的总结目前是键入的double
。
我有两个输出,一个是 Pi 到小数点后 16 位(原始输出)。NumberFormat
第二个输出使用/舍入DecimalFormat
到小数点后 3-5 位。
我花了一些时间在谷歌上搜索和浏览 Stackoverflow,但作为一个初学者,我不确定keywords
找到我正在寻找的正确方法可能需要什么,所以请原谅我的天真...
是否可以计算出超过 16 位小数的答案(即 Pi)?说,32?如果是这样,我该如何处理?
我看过BigDecimal
,但是我认为这不是我所追求的,因为我看到的所有示例都预先定义了带有大量小数位的数字,而不是通过计算,但我可能是错的.
我知道double
's 是 64 位类型,因此不会超过 16 位小数。我也理解使用long
作为类型会失去精度......
任何建议或指导将不胜感激。
谢谢你。
更新
不幸的是,我仍然没有使用 BigDecimals 得到超过 16 位小数……我是否朝着正确的方向前进?
再次更新
我刚刚意识到我认为我的问题出scale
在我的分裂期间。我将其更改为 100,现在将 Pi 设置为小数点后 100 位...我认为该scale
参数允许更高的精度等。它需要该divide(BigDecimal divisor, int scale, int roundingMode)
方法。请参阅 Java 文档>> 这里 <<
有了 Madhava–Leibniz 系列的 500,000 个项,我现在可以用 6 个“正确”有效数字计算 Pi 到 10,000 个小数位。其余的仍在收敛(显然需要 1000 多个术语才能更准确地表示 Pi)。但是出于我们大多数人需要 Pi 的目的,这很好。
感谢大家的帮助。