3

以下代码未在 Java 中编译:

java version "1.6.0_24" OpenJDK Runtime Environment (IcedTea6 1.11.1) (suse-3.1-x86_64) OpenJDK 64-Bit Server VM (build 20.0-b12, mixed mode)

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

您将需要BigIntegerBigDecimal

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 回答