在正常的数学术语中,-1756046391 * -1291488517 将等于 2267913749295792147。
当我在 java 中输入完全相同的等式时,我得到答案:-1756046391 * -1291488517 = 19。
任何人都可以对此有所了解吗?
在正常的数学术语中,-1756046391 * -1291488517 将等于 2267913749295792147。
当我在 java 中输入完全相同的等式时,我得到答案:-1756046391 * -1291488517 = 19。
任何人都可以对此有所了解吗?
溢出。
查看 Integer.MAX_VALUE。Java 中的 Integer 是 32 位 2s 补码值。您不能超过 MAX_VALUE。
在处理非常大的数字时,您需要确保您使用的数据类型足够大以存储该数字。在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
像其他人所说的那样使用 long,或者如果这对您的应用程序来说还不够,请考虑使用BigInteger
.
发布您用来重现此内容的确切代码。
您很可能使用整数。使用 long,因为 2267913749295792147 太大而无法放入 int。