我声明了一个整数 int i = 4945932; 它的平方是一些负随机数。这怎么可能?我究竟做错了什么?请帮助。在此先感谢。
问问题
135 次
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 回答