gpt4 book ai didi

java - 使用 Java 中的 BigDecimal(或其他类)获得更高的精度

转载 作者:行者123 更新时间:2023-12-01 18:00:38 26 4
gpt4 key购买 nike

我想计算具有任意长十进制值的数字(假设我想为特定数字取 100 位十进制数字)。

//Take the square root of 2 for 100 digits in total.
public class Main {
public static void main(String[] args) {
BigDecimal root2 = new BigDecimal(Math.pow(2, 0.5));
root2 = root2.setScale(99, BigDecimal.ROUND_HALF_UP);
System.out.println(root2);
}
}

这个程序输出:

1.414213562373095145474621858738828450441360473632812500000000000000000000000000000000000000000000000

在字节存储方面有初学者背景,我意识到这里的问题要么是输出格式,要么是我仍然没有获得我正在寻找的精度,因为它不使用我的内存我期待着它。有什么建议么?能达到这么高的精度吗?我不反对转向 Mathematica。

澄清一下:我正在尝试获得 100 位数字的完整精度(零不属于这里)。

最佳答案

这里解释了为什么你所做的事情不起作用。

Math.pow()返回一个double。因此,您的代码使用 double 提供的精度计算值,然后从该 double 创建一个 BigDecimal。现在设置大十进制的精度为时已晚,因为它只有 double 作为输入。

因此您不能使用 Math.pow() 来达到您的目的。相反,您需要找到另一个可以执行任意精度计算的库。

请参阅此问题了解更多信息:Java's BigDecimal.power(BigDecimal exponent): Is there a Java library that does it?

关于java - 使用 Java 中的 BigDecimal(或其他类)获得更高的精度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41232458/

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