2

BigInteger 的 valueOf 是否有任何限制?我不确定,但在某处读到,给定的数字只能是长度 = 长。

4

4 回答 4

7

BigInteger本身用于表示不可变的任意精度整数。这意味着它可以表示任何大小的整数(当然受计算机内存的限制)。

但是,该valueOf方法返回一个BigInteger其值等于指定 long 的值。所以按照BigInteger定义以这种方式创建的a只能是大的Long.MAX_VALUE

BigInteger由该类的其他方法和构造函数BigInteger创建的对象当然可以大于Long.MAX_VALUE.

以下面的代码为例:

BigInteger big1 = BigInteger.valueOf(Long.MAX_VALUE);
BigInteger big2 = BigInteger.valueOf(Long.MAX_VALUE);
BigInteger big3 = big1.add(big2);

BigInteger命名big3大于Long.MAX_VALUE即使其组成部分是使用该方法创建的valueOf

于 2010-01-20T12:35:45.930 回答
2

BigIntegervalueOf()方法以 along作为其唯一参数。因此,您可以传递给它的最大数字是 along可以表示的最大值 ( 2^63-1 = 9223372036854775807)。

于 2010-01-20T12:27:30.290 回答
0

根据类的 Java API 规范BigIntegerBigInteger.valueOf方法以 a作为参数,因此通过该方法long可以获得的最大数是 2^63 - 1。BigInteger.valueOfLong.MAX_VALUE

于 2010-01-20T12:32:15.237 回答
0

考虑使用BigInteger(String val, int radix)构造函数。这可以创建BigInteger任何大小的。

于 2010-02-02T19:47:03.150 回答