gpt4 book ai didi

java - 用Java计算小数点后16位以上的答案

转载 作者:太空宇宙 更新时间:2023-11-04 10:20:39 25 4
gpt4 key购买 nike

我用 Java 编写了一个小程序来计算 Pi。

我的求和当前输入为double

我有两个输出,一个是保留 16 位小数的 Pi(原始输出)。第二个输出使用 NumberFormat/DecimalFormat 四舍五入到 3-5 位小数。

我花了一些时间谷歌搜索和浏览 Stackoverflow,但作为一个初学者,我不确定找到我正在寻找的正确方法可能需要任何关键字,所以请原谅我的天真......

是否可以计算出小数点后 16 位以上的答案(即 Pi)?说,32?如果是这样,我该如何处理这个问题?

我看过BigDecimal,但是我不认为这就是我想要的,因为我见过的所有示例都首先预先定义了具有大量小数位数的数字,而不是通过计算,但我可能是错的。

据我所知,double 是 64 位类型,因此不会超过 16 位小数。我也理解使用 long 作为类型会失去精度......

任何建议或指导将不胜感激。

谢谢。

更新

不幸的是,我使用 BigDecimals 仍然没有得到超过 16 位小数...我的方向正确吗?

再次更新

我刚刚意识到我认为我的问题在于我的划分过程中的规模。我将其更改为 100,现在我将 Pi 精确到小数点后 100 位...我认为 scale 参数允许更高的精度等。它需要 divide(BigDecimal divisor, int scale, int roundingMode) 方法。请参阅 Java 文档 >> here <<

利用 Madhava-Leibniz 级数中的 500,000 个项,我现在可以将 Pi 计算到小数点后 10,000 位,并具有 6 个“正确”有效数字。其余的仍在收敛(显然需要 1000 多项才能获得更准确的 Pi 表示)。但对于我们大多数人需要 Pi 的目的来说,这很好。

感谢大家的帮助。

最佳答案

使用 BigDecimal 是解决这个问题的好方法。没有其他标准类型无法为您处理这种精度。另一种方法是实现您自己的数据结构。但我敢打赌,BigDecimal 会好得多。

查看 BigDecimal 的 Javadoc ( http://docs.oracle.com/javase/1.5.0/docs/api/java/math/BigDecimal.html )使用标准类型和 BigDecimal 类型之间的主要区别是不能使用 +、- 等运算符,但需要使用 add()、divide() 等方法。

关于java - 用Java计算小数点后16位以上的答案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51207623/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com