首页 > 解决方案 > Java Biginteger 在 pow 中的最大值

问题描述

我有代码可以从给定的输入中获取指数值:

BigInteger a= new BigInteger(2,10);       
BigInteger b; 
b=a.pow(9999999999);

当值低于 7 位时,它正在工作。例如:

BigInteger a= new BigInteger(2,10);       
BigInteger b; 
b=a.pow(1234567);

我的代码是否使它成为可能,或者指数中不可能有 10 位数字?

我正在使用 JDK 1.8。

标签: javabigintegerpowexponent

解决方案


pow的参数是一个int。的范围int是 -2147483648 到 2147483647,所以答案取决于您使用10 位数字。如果这 10 位数字是 1234567890,那很好,它在范围内(尽管您可能会得到一个非常非常大 BigInteger的数字,这可能会推动您的内存限制);如果它们是您的问题中的 9999999999,那不好,超出范围。

例如,这编译:

int a = 1234567890;

这不会:

int b = 9999999999;
        ^--------------- error: integer number too large: 9999999999

推荐阅读