Java的负数乘法

Ada*_*dam 2 java multiplication

在正常的数学术语中,-1756046391*-1291488517将等于2267913749295792147.

当我在java中输入完全相同的等式时,我得到答案:-1756046391*-1291488517 = 19.

任何人都可以对此有所了解吗?

duf*_*ymo 7

溢出.

检查Integer.MAX_VALUE.Java中的Integer是32位2s补码值.您不能超过MAX_VALUE.


Ozz*_*zzy 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
Run Code Online (Sandbox Code Playgroud)

所以你可以看到,你的数字只是适合一个long.但是你必须要考虑那个,所以你应该使用这个BigInt类代替:

http://docs.oracle.com/javase/6/docs/api/java/math/BigInteger.html