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