线程“main”中的异常java.lang.NumberFormatException:对于输入字符串:基数16下的“9000000000000000”

Mol*_*oly 9 java long-integer

我尝试运行此代码,但发生错误。

System.out.println(Long.parseLong("9000000000000000", 16));
Run Code Online (Sandbox Code Playgroud)

我们知道long的最小个数是-9,223,372,036,854,775,808,0x9000000000000000是-8,070,450,532,247,928,832 为什么会出现错误?

Ole*_*.V. 9

9000000000000000 base 16 是一个正数,因为没有符号。由于 along是有符号的,因此它可以容纳的最大数字是 0x7FFF_FFFF_FFFF_FFFF。所以你的太棒了。

如果你想要 -8,070,450,532,247,928,832,请使用parseUnsignedLong()

        System.out.println(Long.parseUnsignedLong("9000000000000000", 16));
Run Code Online (Sandbox Code Playgroud)

输出:

-8070450532247928832

现在接受高达 0xFFFF_FFFF_FFFF_FFFF 的值。