快速提问,为啥我的指数有上限? [复制]

Posted

技术标签:

【中文标题】快速提问,为啥我的指数有上限? [复制]【英文标题】:Quick question, why is my exponents capped? [duplicate]快速提问,为什么我的指数有上限? [复制] 【发布时间】:2020-07-16 08:56:28 【问题描述】:
public static void main(String[] args)

int res = (int)Math.pow(2017, 202);

System.out.println(res);

这会输出 2147483647

这显然是错误的,如果我输入其他指数,输出保持不变。 我该如何移除这个上限?是什么原因造成的?

【问题讨论】:

只需使用BigInteger:BigInteger result = BigInteger.valueOf(2017).pow(202) 如果您正在为某种编码/数学测验/问题进行计算,那么实际上根本不需要计算功率,例如如果你之后mod 【参考方案1】:

要移除上限,请使用不同的数据类型。

int 的上限为 2^31-1,long 的上限为 2^63-1,但 AFAIK BigInteger 没有上限:

BigInteger res = new BigInteger("2017").pow(202)

但是,不要将它用于正常计算,因为它要慢得多。

【讨论】:

BigInteger is capped, but not enforced by the specs Here's what Math.pow(2017, 202) is.

以上是关于快速提问,为啥我的指数有上限? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的 jpg 和 png 没有在 R Shiny 上处理? [复制]

提问:为啥从数据库查询出来只能显示一条数据,求大神帮忙!!

为啥我的输出值为指数格式 1.04e+05? [复制]

苹果osx怎么选择复制为啥直接复制到当前目录下了

如何快速而优雅的解决问题(提问的智慧简略版)

为啥我提问想法张图,老是图片上传失败