BigInteger的valueOf有任何限制吗?我不确定但是在某处阅读,给定的数字只能是长度=长。
答案 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类的BigInteger
,BigInteger.valueOf
方法以long
为参数,因此可以通过{{1获得的最大数字方法是Long.MAX_VALUE
,这是2 ^ 63 - 1。
答案 3 :(得分:0)
考虑使用BigInteger(String val, int radix)
构造函数。这可以创建任意大小的BigInteger
。