我想计算任意长的小数值的数字(假设我想为特定数字拿一个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
拥有字节存储的初学者背景,我意识到这里的问题要么是输出格式,要么我仍然没有得到我要寻找的精度,因为它不使用内存i'我期待它。有什么建议么?有可能获得这么高的精确度吗?我不反对求助于Mathematica。
进行澄清:我正在尝试获得100位数字的完整精度(零不属于这里)。
这是一个解释,为什么您正在做的事情不起作用。
Math.pow()
返回double
。因此,您的代码是使用Double提供的精度来计算值的,然后从该double创建BigDecimal
。为时已晚,将精度设置为大十进制,因为它只有双重输入。
因此,您无法将Math.pow()
用于目的。相反,您需要找到另一个进行任意精确计算的库。
请参阅此问题以获取更多信息:Java的BigDecimal.power(BigDecimal指数):是否有Java库?