我声明了一个整数int i = 4945932;它的正方形出现了一些负的随机数。这怎么可能?我究竟做错了什么?请帮助。谢谢。
答案 0 :(得分:7)
Integer overflow. Java int不能大于2,147,483,647;如果你试图存储一个更大的数字,它就会溢出。
如果您改为使用long
,则可以存储更大的值,包括您尝试存储的值。如果你需要更大的值,java.math.BigInteger
可以存储任意精度的整数;唯一的限制是你电脑的记忆。
答案 1 :(得分:2)
因为int的限制而发生。 integer OverFlow.
int可以存储4个字节,有符号(两个补码)。 -2,147,483,648至2,147,483,647。
如果你写int i= square(4945932)
它是24462243348624所以它将超过int的限制,所以它表现异常。
答案 2 :(得分:2)
您可以使用
long l = 4945932L;
System.out.println(l * l);
BigInteger bi = BigInteger.valueOf(4945932L);
System.out.println(bi.multiply(bi));
打印
24462243348624
24462243348624
答案 3 :(得分:1)
你超过了int的大小。如果要平方4945932,则需要更改为长。