当我使用Math.pow(9, 18) =150094635296999136
当我使用网络计算器9 ^ 18 = 150094635296999121(http://web2.0calc.com/)
当我使用Google计算器时9 ^ 18 = 1.50094635×10 ^ 17
为何与众不同?
答案 0 :(得分:16)
在该范围内,连续double
值之间的差值为32. 150094635296999121是一个整数的正确答案,但该数字不能完全表示为double
。
您可以使用BigInteger
来获得确切答案:
Math.pow(9, 18) == 150094635296999136
BigInteger.valueOf(9).pow(18) == 150094635296999121