如果我在Java中运行Math.pow(15, 14)
,结果将显示为
29192926025390624
但是,如果我在Windows中的科学计算器中运行15 ^ 14,它将返回
29192926025390625
这是因为Math.pow(a, b)
使用double
进行计算吗?
如果是这样,解决此类问题的最佳方法是什么? (例如,在Java中获得15 ^ 14的正确答案)
答案 0 :(得分:4)
由于Math.pow()
使用的浮点算法,因此您怀疑舍入错误。 double
无法保留值29192926025390625
,如此代码段所示:
double d = 29192926025390625L;
System.out.println(d);
打印
2.9192926025390624E16
您可以使用BigInteger
来避免舍入问题:
BigInteger b = new BigInteger("15");
BigInteger result = b.pow(14);