8

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

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

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

为什么不一样?

4

1 回答 1

16

在该范围内,连续double值之间的差值为 32。 150094635296999121 是整数的正确答案,但该数字不能精确表示为 a double

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

Math.pow(9, 18) == 150094635296999136
BigInteger.valueOf(9).pow(18) == 150094635296999121
于 2011-06-02T05:25:12.287 回答