在Java中操作大整数

在Java中操作大整数,java,biginteger,Java,Biginteger,我一直在开发一个java程序,在这个程序中,我需要计算巨大的值并将其存储到数组中。到目前为止,我通过在指数函数中插入输入的变量来获得值: Math.pow(7,x); 我决定将该值存储到BigInteger数组中,但我不知道如何使用BigInteger提供的构造函数存储这些常规操纵值。对于“x”值,我实际上使用了相当大的数字,它们在longs可以存储的范围内启动指定的值。我似乎对我想到的每一个解决方案都充满了兴趣……只要做: bigArray[i] = new BigInteger((long

我一直在开发一个java程序,在这个程序中,我需要计算巨大的值并将其存储到数组中。到目前为止,我通过在指数函数中插入输入的变量来获得值:

Math.pow(7,x);
我决定将该值存储到BigInteger数组中,但我不知道如何使用BigInteger提供的构造函数存储这些常规操纵值。对于“x”值,我实际上使用了相当大的数字,它们在longs可以存储的范围内启动指定的值。我似乎对我想到的每一个解决方案都充满了兴趣……只要做:

bigArray[i] = new BigInteger((long)Math.pow(7,x));

不起作用,因为我处理大于100的值作为x。我能做什么?

将字符串作为参数提供给BigInteger构造函数,例如

BigInteger bigInteger = new BigInteger("1000000000000000000000000000000000000000000000000000000000000000000");
就你而言

 BigInteger bigInteger = new BigInteger("7").pow(x);


aioobe已经给出了答案,建议使用BigInteger.valueOf是正确的,但我想提供一些附加信息

正如他所说:

BigInteger bi = BigInteger.valueOf(7).pow(x);
但我们也来看看Java文档中关于“valueOf()方法”的内容:

此“静态工厂方法”优先于(长)构造函数提供,因为它允许重用常用的大整数


请参阅:

大多数反对票都是对答案的上一次修订,甚至没有包括BigInteger::pow。尽管如此,我还是不明白你为什么建议使用基于字符串的构造函数。也许吧,但如果你否决了某个东西,那通常是出于礼貌,你可以在海报上停留一段时间,看看海报是否改善了发布效果,这就是这里发生的事。@aioobe我之所以传递字符串,是因为
long l=10000000000000000000000
甚至不会编译,但是
BigInteger BigInteger=new BigInteger(“10000000000000000000000000000000000000000000000000000000000000000000000”).pow(10)
将像一个charmBut一样工作OP没有提到任何关于大基数的内容。他甚至以
7
为例。问题是当他改变
x
时,他说这个值高达
100
。这两个数字都不需要基于字符串的构造函数,这是非常正确的。字符串构造函数也可以工作,但为了提高效率,只需使用“biginger.valueOf()”构造函数就可以了。谢谢大家的帮助!谢谢你的帮助!其他信息也有帮助
BigInteger bi = BigInteger.valueOf(7).pow(x);