数字太大了

时间:2011-05-02 13:58:53

标签: java

嘿,我希望我能得到帮助。

我是rsps的编码器(runescape私人服务器)

在这个游戏中你可以拥有物品和武器

你可以拥有的物品的最大安装量是2147000000

我可以通过更改此int

来更改max的数量
public int maxItemAmount = 2147000000;

并且有效

但我想让它像3000000000

我这样做

public int maxItemAmount = 3000000000;

当我编译时我得到这个错误

integrer number too large: 3000000000
如果可以的话,请大家帮帮我:)。

7 个答案:

答案 0 :(得分:4)

整数的上限为2 ^ 31(2147483648)。如果你想要的数字比这长,你可以使用长或双。

答案 1 :(得分:3)

整数是带符号的32位值,因此最大值可以为2 31 =(注意一个符号用于符号)。

您需要将maxItemAmount的类型更改为长。

答案 2 :(得分:3)

你应该使用64位类型......即:long ...

做......

public long maxItemAmount = 3000000000L;

答案 3 :(得分:1)

32位有符号整数的范围为-2 32 至2 32 -1,或 - 2,147,483,648至2,147,483,647。如果需要超出此范围的整数值,则需要使用64位(长)变量。另一方面,任何人有多少可能拥有超过2亿个不同的物品或武器?也许,您想重新考虑它并分别跟踪项目及其数量。您可能还需要考虑,如果代码的某些部分假设它是32位值,那么更改为使用long可能会产生意外后果。

答案 4 :(得分:0)

而不是int,您应该使用longHere您可以找到有关Java原始数据类型精度的更多信息。

从链接引用:

  

long:long数据类型是64位带符号的二进制补码整数。它的最小值为-9,223,372,036,854,775,808,最大值为9,223,372,036,854,775,807(含)。当需要比int提供的值范围更宽的值时,请使用此数据类型。

答案 5 :(得分:0)

您可以使用Integer.MAX_VALUE和Long.MAX_VALUE查看数字的最大值。

如果长度仍然不足以满足您的需求,您可以查看BigInteger类。

答案 6 :(得分:0)

正如其他人所说,您必须使用支持数字的其他数据类型。
我建议你使用long。例如:

public long maxItemAmount = 3000000000L;

请注意值末尾的L。它告诉运行时3000000000是long值。或者使用:

public long maxItemAmount = new Long("3000000000");

查看更多信息on this page


另外,有人使用BigInteger进行了评论。这就像String;没有限制。
但是,我建议你很少使用它。 long可能会满足您的需求。

编辑:严格来说,BigIntegerString s 限制(请参阅评论)。 < / p>