gpt4 book ai didi

Java Long.MAX_VALUE 属性抛出 "integer number too large"异常!我包括 "L"

转载 作者:行者123 更新时间:2023-12-01 07:04:40 25 4
gpt4 key购买 nike

我正在使用 Java SE 开发套件 8 更新 25(64 位)。我已经阅读了The Java™ Tutorials中的“原始数据类型”java教程根据此规范,long 类型可以容纳(2 的 64 次方)-1 的最大值,即 18446744073709551615。

但是下面的代码会抛出“整数太大”错误消息。

public class SampleClass
{
public static void main (String[] args)
{
Long longMaxValue= 18446744073709551615L /* UInt64.MaxValue */;
}
}

此外,Long.Max_Value 仅返回 9223372036854775807 。为什么?我需要将值 18,446,744,073,709,551,615 存储为 java 中的常量。我该怎么办?

如有任何帮助,我们将不胜感激。

最佳答案

long 的最大正值是(2 的 63 次方)- 1,因为 Java 中的 long 是有符号的,因此可以保存负整数。最左边的位保留用于符号,剩下 63 位用于值本身。

如果 Long.MAX_VALUE 对您来说不够大,您可以使用 BigInteger

如果您使用 Java 8 并希望将 long 视为无符号,则另一个选择是使用 Long 的无符号方法:

例如:

long l = parseUnsignedLong("18446744073709551615");

如果使用 System.out.println(l) 打印 l,您将看到负值,但如果打印 Long.toUnsignedString( l)您将看到无符号值。

关于Java Long.MAX_VALUE 属性抛出 "integer number too large"异常!我包括 "L",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28936758/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com