我是rsps的编码器(runescape私人服务器)
在这个游戏中你可以拥有物品和武器
你可以拥有的物品的最大安装量是2147000000
我可以通过更改此int
来更改max的数量public int maxItemAmount = 2147000000;
并且有效
但我想让它像3000000000
我这样做
public int maxItemAmount = 3000000000;
当我编译时我得到这个错误
integrer number too large: 3000000000
如果可以的话,请大家帮帮我:)。
答案 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
,您应该使用long
。 Here您可以找到有关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
可能会满足您的需求。
编辑:严格来说,BigInteger
和String
s 有限制(请参阅评论)。 < / p>