Math.pow(9,18)和9 ^ 18之间有什么区别?

时间:2011-06-02 05:21:18

标签: java floating-accuracy pow

当我使用Math.pow(9, 18) =150094635296999136

当我使用网络计算器9 ^ 18 = 150094635296999121(http://web2.0calc.com/

当我使用Google计算器时9 ^ 18 = 1.50094635×10 ^ 17

为何与众不同?

1 个答案:

答案 0 :(得分:16)

在该范围内,连续double值之间的差值为32. 150094635296999121是一个整数的正确答案,但该数字不能完全表示为double

您可以使用BigInteger来获得确切答案:

Math.pow(9, 18) == 150094635296999136
BigInteger.valueOf(9).pow(18) == 150094635296999121