2

プログラムで 2 つの巨大な BigIntegervalues を乗算していました。失敗しました。BigIntegerとの制限は何BigDecimalですか?

4

2 に答える 2

5

大きな数を乗算しても NumberFormatException は発生しません。生成された数が大きすぎる場合、配列のサイズがオーバーフローするため、不可解な NegativeArraySizeException が発生します。

メモリ不足エラーが発生する可能性が高くなります。

BigInteger の制限は 32 * 2^32-1 ビット、または約 2^(40 億) です。

次の場合、NumberFormatException を取得できます。

  • 空のバイトから BigInteger を作成します[]
  • signum < -1 または > +1 を使用する
  • 基数 >36 または < 2 の数値を解析してみてください
  • 不正な数字を含む文字列があります。

例外が発生した場合は、メッセージとスタック トレースも確認する必要があります。これにより通常、本当の原因がわかります。

于 2013-07-30T11:37:37.890 に答える
1

メモリを除いて制限があるべきではありませんが、クラスの実装に応じて制限がある可能性があります (たとえば、int または long のフィールドがある場合があります)。

于 2013-07-30T11:48:43.497 に答える