整数 int i = 4945932; を宣言しました。そして、その二乗は負の乱数であることがわかります。これはどのように可能ですか?私は何を間違っていますか?助けてください。よろしくお願いします。
質問する
135 次
4 に答える
7
整数のオーバーフロー。Javaintは2,147,483,647より大きくすることはできません。より多くの数を格納しようとすると、オーバーフローします。
代わりにを使用するlong
と、保存しようとしている値を含め、はるかに大きな値を保存できます。さらに大きな値が必要な場合は、java.math.BigInteger
任意精度の整数を格納できます。唯一の制限は、コンピュータのメモリです。
于 2012-07-03T12:31:21.193 に答える
2
int の制限が原因で発生します。整数オーバーフロー。
int は、符号付き (2 の補数) の 4 バイトを格納できます。-2,147,483,648 ~ 2,147,483,647。
24462243348624と書くint i= square(4945932)
とintの制限を超えてしまうので異常な動作をします。
于 2012-07-03T12:30:26.627 に答える
2
使用できます
long l = 4945932L;
System.out.println(l * l);
BigInteger bi = BigInteger.valueOf(4945932L);
System.out.println(bi.multiply(bi));
版画
24462243348624
24462243348624
于 2012-07-03T12:43:30.267 に答える
1
intのサイズを超えています。4945932を正方形にしたい場合は、longに変更する必要があります。
于 2012-07-03T12:32:54.313 に答える