私は1兆を変数に格納しようとしています。ただし、可変型が長い場合でも範囲外であるため、日食は摩耗し続けます。
これが私のコードです:
long temp = 1;
if(...){
temp = 1000000000000;
}
なぜこれが起こっているのかについて誰かが何か洞察を持っているなら、私はそれを本当に感謝します。
試す
temp = 1000000000000L;
1000000000000のjavaはintとして認識され、末尾にLを追加して長くします
Javaの数学ライブラリにはBigIntegerタイプがあります。
http://docs.oracle.com/javase/1.5.0/docs/api/java/math/BigInteger.html
例:
import java.math.BigInteger;
public class BigIntegerExample
{
public static void main(String[] args)
{
BigInteger bigInteger1 = new BigInteger ("123456789");
BigInteger bigInteger2 = new BigInteger ("112334");
BigInteger bigIntResult =
bigInteger1.multiply(bigInteger2);
System.out.println("Result is ==> " + bigIntResult);
}
}
int
Javaのinは符号付き32ビットであるため、最大のint値は2,147,483,647です。1兆のようなより大きな数を表すためにlongを使用することは良いオプションです。
long temp = 1000000000000L;
Javaのプリミティブデータ型とその制限について詳しくは、プリミティブデータ型に関するこのOracleの記事を参照することを強くお勧めします。