0

我声明了一个整数 int i = 4945932; 它的平方是一些负随机数。这怎么可能?我究竟做错了什么?请帮助。在此先感谢。

4

4 回答 4

7

整数溢出。Java int 不能大于 2,147,483,647;如果您尝试存储更大的数字,它会溢出。

如果您改为使用 a long,则可以存储更大的值,包括您尝试存储的值。如果需要更大的值,java.math.BigInteger可以存储任意精度的整数;唯一的限制是您计算机的内存。

于 2012-07-03T12:31:21.193 回答
2

它的发生是因为 int 的限制。整数溢出。

int 可以存储 4 个字节,有符号(二进制补码)。-2,147,483,648 至 2,147,483,647。

如果你写int i= square(4945932)它是 24462243348624 所以它会超过 int 的限制所以它表现异常。

于 2012-07-03T12:30:26.627 回答
2

您可以使用

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

印刷

24462243348624
24462243348624
于 2012-07-03T12:43:30.267 回答
1

您超出了 int 的大小。如果要平方 4945932,则需要更改为 long。

于 2012-07-03T12:32:54.313 回答