Java的Math.pow返回1错误

时间:2014-04-13 10:00:17

标签: java

如果我在Java中运行Math.pow(15, 14),结果将显示为

29192926025390624

但是,如果我在Windows中的科学计算器中运行15 ^ 14,它将返回

29192926025390625

这是因为Math.pow(a, b)使用double进行计算吗?

如果是这样,解决此类问题的最佳方法是什么? (例如,在Java中获得15 ^ 14的正确答案)

1 个答案:

答案 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);