在正常数学术语中,-1756046391 * -1291488517将等于2267913749295792147。
当我在java中输入完全相同的等式时,我得到答案:-1756046391 * -1291488517 = 19.
任何人都可以对此有所了解吗?
答案 0 :(得分:6)
溢出。
检查Integer.MAX_VALUE。 Java中的Integer是32位2s补码值。您不能超过MAX_VALUE。
答案 1 :(得分:5)
处理非常大的数字时,您需要确保您使用的数据类型足以存储该数字。在java中,您有这些原始数字类型:
type: min: max:
byte -128 127
short -32768 32767
int -2,147,483,648 2,147,483,647
long -9,223,372,036,854,775,808 9,223,372,036,854,775,807
正如您所看到的,您的号码恰好适合long
。但是你必须重复这一点,所以你应该使用BigInt
类代替:
http://docs.oracle.com/javase/6/docs/api/java/math/BigInteger.html
答案 2 :(得分:1)
如其他人所说的那样使用多头,或者如果这对您的应用程序来说不够,请考虑使用BigInteger
。
答案 3 :(得分:0)
发布您用于重现此内容的确切代码。
您最有可能使用整数。使用long,因为2267913749295792147太大而无法放入int。