为什么我得到错误“整数太大”?我最后加了一个“L”

时间:2012-04-05 18:12:44

标签: java javac long-integer

以下代码未在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"

我做错了什么?

2 个答案:

答案 0 :(得分:17)

好吧,也许是因为 too large

595082963178094600000  //your value
  9223372036854775807  //Long.MAX_VALUE

您需要BigIntegerBigDecimal

new BigInteger("595082963178094600000")

答案 1 :(得分:2)

长期价值必须介于-9,223,372,036,854,775,808和9,223,372,036,854,775,807之间。您不能将大于这些值的值分配给长的变量,即使您向其附加L,它也会溢出该值并在编译时导致错误。