BigInteger の valueOf には制限がありますか? よくわかりませんが、どこかで読んだところ、指定された数値は length = long のみである可能性があります。
4 に答える
クラス自体は、BigInteger
不変の任意精度の整数を表すために使用されます。つまり、任意のサイズの整数を表すことができます (もちろん、コンピューターのメモリによって制限されます)。
ただし、このvalueOf
メソッドはBigInteger
、指定された long の値と等しい値を持つ を返します。したがって、BigInteger
このように定義された方法で作成された は、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
BigInteger
のvalueOf()
メソッドは、 along
を唯一のパラメーターとして使用します。したがって、渡すことができる最大数は、 along
が表すことができる最大数です ( 2^63-1 = 9223372036854775807
)。
BigInteger(String val, int radix)
コンストラクターの使用を検討してください。BigInteger
これにより、任意のサイズを作成できます。
クラスの Java API 仕様によると、このメソッドは引数として a を取るため、メソッドを介して取得できる最大数は 2^63 - 1 です。BigInteger
BigInteger.valueOf
long
BigInteger.valueOf
Long.MAX_VALUE