2

私は1兆を変数に格納しようとしています。ただし、可変型が長い場合でも範囲外であるため、日食は​​摩耗し続けます。

これが私のコードです:

long temp = 1;

if(...){
    temp = 1000000000000;
}

なぜこれが起こっているのかについて誰かが何か洞察を持っているなら、私はそれを本当に感謝します。

4

3 に答える 3

17

試す

temp = 1000000000000L;

1000000000000のjavaはintとして認識され、末尾にLを追加して長くします

于 2012-04-17T23:53:12.100 に答える
0

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);
  }
}
于 2012-04-17T23:55:17.917 に答える
0

intJavaのinは符号付き32ビットであるため、最大のint値は2,147,483,647です。1兆のようなより大きな数を表すためにlongを使用することは良いオプションです。

long temp = 1000000000000L;

Javaのプリミティブデータ型とその制限について詳しくは、プリミティブデータ型に関するこのOracleの記事を参照することを強くお勧めします。

于 2012-04-18T00:13:41.897 に答える