Java中还有其他方法可以计算整数的幂吗?
我现在使用 Math.pow(a, b)
,但它返回一个 double
,这通常是很多工作,当你只想使用 int
时看起来不太干净(然后权力也总是会导致 int
)。
有没有像 a**b
这样简单的东西,就像在 Python 中一样?
原文由 Hidde 发布,翻译遵循 CC BY-SA 4.0 许可协议
当它是 2 的幂时。请记住,您可以使用简单快速的移位表达式 1 << exponent
例子:
2 2 = 1 << 2
= (int) Math.pow(2, 2)
2 10 = 1 << 10
= (int) Math.pow(2, 10)
对于较大的指数(超过 31),请改用 long
2 32 = 1L << 32
= (long) Math.pow(2, 32)
顺便提一句。在科特林你有 shl
而不是 <<
所以
(java) 1L << 32
= 1L shl 32
(科特林)
原文由 Stanislaw Baranski 发布,翻译遵循 CC BY-SA 4.0 许可协议
15 回答8.2k 阅读
8 回答6k 阅读
1 回答4.1k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答3.2k 阅读
2 回答3.9k 阅读
1 回答2.2k 阅读✓ 已解决
整数只有 32 位。这意味着它的最大值是
2^31 -1
。如您所见,对于非常小的数字,您很快就会得到一个无法再用整数表示的结果。这就是为什么Math.pow
使用double
的原因。如果您想要任意整数精度,请使用
BigInteger.pow
。但这当然效率较低。