В чем разница между Math.pow (9, 18) и 9 ^ 18 - PullRequest
8 голосов
/ 02 июня 2011

при использовании Math.pow(9, 18) =150094635296999136

при использовании веб-калькулятора 9 ^ 18 = 150094635296999121 (http://web2.0calc.com/)

при использовании гугл-калькулятора 9 ^ 18 = 1.50094635 × 10 ^ 17

почему это отличается?

1 Ответ

16 голосов
/ 02 июня 2011

В этом диапазоне разница между последовательными значениями double равна 32. 150094635296999121 - это правильный ответ в виде целого числа, но это число нельзя точно представить как double.

.1005 *BigInteger, чтобы получить точный ответ:

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