计算整数的幂
在Java中还有其他方法可以计算整数的幂吗?
我现在使用,但它返回一个,这通常是很多工作,当你只想使用s时,看起来不太干净(然后一个电源也总是会导致一个)。Math.pow(a, b)doubleintint
有没有像Python一样简单的东西?a**b
在Java中还有其他方法可以计算整数的幂吗?
我现在使用,但它返回一个,这通常是很多工作,当你只想使用s时,看起来不太干净(然后一个电源也总是会导致一个)。Math.pow(a, b)doubleintint
有没有像Python一样简单的东西?a**b
整数只有 32 位。这意味着其最大值为 。如您所见,对于非常小的数字,您很快就会得到一个不能再用整数表示的结果。这就是使用 .2^31 -1Math.powdouble
如果需要任意整数精度,请使用 BigInteger.pow。但它当然效率较低。
当它是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