0

2 23,000BigIntegerのデータ型の値を見つけようとすると、値が表示されません。

ただし、2 22,000BigIntegerまでの計算では、問題なく値を表示できました。

これの解決策や理由はありますか?

4

4 に答える 4

8

BigIntegerを表現するために、次のことを試しました2^23000

BigInteger bi = new BigInteger("2");
bi = bi.pow(23000);
System.out.println(bi);

そして表示された数字は6925桁にも及ぶ非常に大きな数字でした。(100行以上になるので貼りません。)

これは、Windows XP の Java 6 SE バージョン 1.6.0_12 にあります。

API 仕様によると、BigIntegerは任意精度の整数値であり、非常に大きな整数値に対応できるはずです。

于 2009-06-15T00:46:26.277 に答える
4

GNU/Linux では問題なく動作します。「表示」できないとはどういう意味ですか? あなたのコードは何ですか?どのようなエラー/問題が発生していますか?

于 2009-06-15T00:43:46.080 に答える
1

BigInteger のこの制限は約 2^16 億ですが、約 2^2 億を超えると一部の関数が正しく動作しないことが指摘されています。

私の推測では、コンソールまたは IDE で非常に長い行を表示する際に問題が発生していると思われます。

于 2009-06-15T06:03:14.870 に答える
0

全部必要ですか?BigInteger.modpow(power、modulus)メソッドもあります。このメソッドは、整数値を指定された累乗に上げ、結果の%modulusを返します。これは暗号化で一般的に使用されます。これは、非常に大きな指数を処理する場合にもはるかに高速です。

于 2009-06-15T03:20:36.467 に答える