2012-07-03 51 views
0

我聲明瞭一個整數int i = 4945932;其廣場正出現一些負面的隨機數。這怎麼可能?我究竟做錯了什麼?幫助please.Thanks提前。

+3

'整數overflow'吧?如果您對該術語或其原因不熟悉,現在對Google來說是個好時機。 –

回答

7

Integer overflow. Java int不能大於2,147,483,647;如果您嘗試存儲更大的數字,則會溢出。

如果您改爲使用long,它可以存儲更大的值,包括您要存儲的值。如果你需要更大的值,java.math.BigInteger可以存儲任意精度的整數;唯一的限制是你電腦的內存。

2

它發生是因爲int的限制。 integer OverFlow.

int可以存儲4個字節,有符號(二進制補碼)。 -2,147,483,648至2,147,483,647。

如果你寫int i= square(4945932)它是24462243348624所以它會超過int的限制,所以它的行爲異常。

+0

那麼我應該選擇哪種數據類型來處理這種整數? – Aang

+3

@avatar:使用'long'類型。 – nhahtdh

+0

您可以使用long或BigInteger。 –

1

您超出了int的大小。您將需要更改爲長時間,如果你想方4945932.

2

您可以使用

long l = 4945932L; 
System.out.println(l * l); 
BigInteger bi = BigInteger.valueOf(4945932L); 
System.out.println(bi.multiply(bi)); 

打印

24462243348624 
24462243348624