Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从Math.pow的结果构造BigInteger时的NumberFormatException_Java_Biginteger - Fatal编程技术网

Java 从Math.pow的结果构造BigInteger时的NumberFormatException

Java 从Math.pow的结果构造BigInteger时的NumberFormatException,java,biginteger,Java,Biginteger,我试图处理一些较大的整数值,但初始化BigInteger变量时遇到一些问题。我一直在做: BigInteger x = new BigInteger("" + (Math.pow(2, n))); 其中n是100中的某个数字,但这引发了NumberFormatException。我不认为我可以使用BigInteger,Valueof(),因为这需要很长时间,我认为这还不够大。任何帮助都将不胜感激。以某种方式返回类型为double的值,该值将使用十进制分隔符格式化BigInteg

我试图处理一些较大的整数值,但初始化BigInteger变量时遇到一些问题。我一直在做:

        BigInteger x = new BigInteger("" + (Math.pow(2, n)));
其中n是100中的某个数字,但这引发了NumberFormatException。我不认为我可以使用BigInteger,Valueof(),因为这需要很长时间,我认为这还不够大。任何帮助都将不胜感激。

以某种方式返回类型为
double
的值,该值将使用十进制分隔符格式化
BigInteger
无法接受十进制值

抛出:
NumberFormatException
-val不是
BigInteger
的有效表示形式

只需使用
biginger

BigInteger x = BigInteger.TWO.pow(n);
以某种方式返回类型为
double
的值,该值将使用十进制分隔符进行格式化
BigInteger
无法接受十进制值

抛出:
NumberFormatException
-val不是
BigInteger
的有效表示形式

只需使用
biginger

BigInteger x = BigInteger.TWO.pow(n);

如果从BigInteger使用,则使用Pow执行操作将返回一个doubleBigInteger。如果从BigInteger使用,则使用Pow执行操作将返回一个doubleBigInteger。有趣的是,对于大
n
BigInteger.ONE.shiftLeft(n)
@sirrafblebuffle:嗯,这很有道理
shiftLeft()
可以非常有效地进行移位,而
pow()
必须使用多次乘法来计算功率。事实上,我希望
shiftLeft()
比你发现的要快得多,即使对于
n
的相对“小”值也是如此。因为没有BigInteger.2(好吧),我稍微修改了你的答案。@RudyVelthuis从9开始,@Savior:啊,还没有尝试9。有趣的是,对于大的
n
BigInteger.1.shiftLeft(n)
的速度似乎是biginger的两倍。TWO.pow(n)@SirRaffleBuffle:嗯,这很有道理
shiftLeft()
可以非常有效地进行移位,而
pow()
必须使用多次乘法来计算功率。事实上,我希望
shiftLeft()
比你发现的要快得多,即使对于
n
的相对“小”值也是如此。因为没有大整数。二(好吧),我稍微修改了你的答案。@RudyVelthuis自9以来,@Savior:啊,还没有尝试9。