计算整数的幂

2022-08-31 10:50:06

在Java中还有其他方法可以计算整数的幂吗?

我现在使用,但它返回一个,这通常是很多工作,当你只想使用s时,看起来不太干净(然后一个电源也总是会导致一个)。Math.pow(a, b)doubleintint

有没有像Python一样简单的东西?a**b


答案 1

整数只有 32 位。这意味着其最大值为 。如您所见,对于非常小的数字,您很快就会得到一个不能再用整数表示的结果。这就是使用 .2^31 -1Math.powdouble

如果需要任意整数精度,请使用 BigInteger.pow。但它当然效率较低。


答案 2

当它是2的幂。请记住,您可以使用简单快速的移位表达式1 << exponent

例:

22 = =
2101 << 2(int) Math.pow(2, 2) = 1 << 10 = (int) Math.pow(2, 10)

对于较大的指数(超过 31),请改用 long

232 = 1L << 32 = (long) Math.pow(2, 32)

顺便说一句。在 Kotlin 中,你有而不是这样shl<<

(java) = (kotlin)1L << 321L shl 32