2

BigInteger の valueOf には制限がありますか? よくわかりませんが、どこかで読んだところ、指定された数値は length = long のみである可能性があります。

4

4 に答える 4

7

クラス自体は、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

于 2010-01-20T12:35:45.930 に答える
2

BigIntegervalueOf()メソッドは、 alongを唯一のパラメーターとして使用します。したがって、渡すことができる最大数は、 alongが表すことができる最大数です ( 2^63-1 = 9223372036854775807)。

于 2010-01-20T12:27:30.290 に答える
0

BigInteger(String val, int radix)コンストラクターの使用を検討してください。BigIntegerこれにより、任意のサイズを作成できます。

于 2010-02-02T19:47:03.150 に答える
0

クラスの Java API 仕様によると、このメソッドは引数として a を取るため、メソッドを介して取得できる最大数は 2^63 - 1 です。BigIntegerBigInteger.valueOflongBigInteger.valueOfLong.MAX_VALUE

于 2010-01-20T12:32:15.237 に答える