计算整数的幂

新手上路,请多包涵

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

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

有没有像 a**b 这样简单的东西,就像在 Python 中一样?

原文由 Hidde 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 629
2 个回答

整数只有 32 位。这意味着它的最大值是 2^31 -1 。如您所见,对于非常小的数字,您很快就会得到一个无法再用整数表示的结果。这就是为什么 Math.pow 使用 double 的原因。

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

原文由 JB Nizet 发布,翻译遵循 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 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题