通常の数学用語では、-1756046391*-1291488517は2267913749295792147に等しくなります。
Javaでまったく同じ方程式を入力すると、答えが得られます:-1756046391 * -1291488517=19。
誰かがこれに光を当てることができますか?
通常の数学用語では、-1756046391*-1291488517は2267913749295792147に等しくなります。
Javaでまったく同じ方程式を入力すると、答えが得られます:-1756046391 * -1291488517=19。
誰かがこれに光を当てることができますか?
オーバーフロー。
Integer.MAX_VALUE を確認してください。Java の整数は、32 ビットの 2 の補数値です。MAX_VALUE を超えることはできません。
非常に大きな数を処理する場合は、使用したデータ型がその数を格納するのに十分な大きさであることを確認する必要があります。Javaには、次のプリミティブな数値タイプがあります。
type: min: max:
byte -128 127
short -32768 32767
int -2,147,483,648 2,147,483,647
long -9,223,372,036,854,775,808 9,223,372,036,854,775,807
ご覧のとおり、あなたの番号はほぼに収まりますlong
。しかし、あなたはそれを乗り越えなければならないので、おそらくBigInt
代わりにクラスを使用する必要があります:
http://docs.oracle.com/javase/6/docs/api/java/math/BigInteger.html
他の人が言ったように long を使用するか、それがアプリケーションにとって十分でない場合は、 の使用を検討してくださいBigInteger
。
これを再現するために使用した正確なコードを投稿してください。
ほとんどの場合、int を使用しています。2267913749295792147 は大きすぎて int に収まらないため、long を使用します。