3

次のコードはJavaでコンパイルされていません。

javaバージョン"1.6.0_24"OpenJDKランタイム環境(IcedTea6 1.11.1)(suse-3.1-x86_64)OpenJDK 64ビットサーバーVM(ビルド20.0-b12、混合モード)

public class XOR
{
    public static void main(String[] args)
    {
        long one = 595082963178094600000L;
    }
}

これはエラーをスローします:

XOR.java:5: integer number too large: 595082963178094600000

しかし、私はそれを長いものとして適切に示しました!次の場合もエラーが発生します。

public class XOR
{
    public static void main(String[] args)
    {
        long one = new Long( "595082963178094600000" );
    }
}

これはスローします:

java.lang.NumberFormatException: For input string: "595082963178094600000"

私は何が間違っているのですか?

4

2 に答える 2

17

まあ、多分それ too large理由で?

595082963178094600000  //your value
  9223372036854775807  //Long.MAX_VALUE

BigIntegerまたはのいずれかが必要になりますBigDecimal

new BigInteger("595082963178094600000")
于 2012-04-05T18:15:08.733 に答える
2

longの値は、-9,223,372,036,854,775,808から9,223,372,036,854,775,807までの範囲である必要があります。これらよりも大きい値を長い変数に割り当てることはできません。Lを追加しても、値がオーバーフローし、コンパイル時にエラーが発生します。

于 2012-04-05T18:42:00.640 に答える