BigInteger.valueOf()限制

时间:2010-01-20 12:25:33

标签: java biginteger

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

4 个答案:

答案 0 :(得分:7)

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

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

BigInteger类的其他methods and constructors创建的

BigInteger个对象当然可以大于Long.MAX_VALUE

以下面的代码为例:

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

名为BigInteger的{​​{1}}大于big3,即使其组成部分是使用Long.MAX_VALUE方法创建的。

答案 1 :(得分:2)

BigInteger的{​​{1}}方法将valueOf()作为唯一参数。因此,您传递给它的最大数量是long可以表示的最大数量(long)。

答案 2 :(得分:0)

根据The Java API Specification类的BigIntegerBigInteger.valueOf方法以long为参数,因此可以通过{{1获得的最大数字方法是Long.MAX_VALUE,这是2 ^ 63 - 1。

答案 3 :(得分:0)

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