Java负数乘法

Java负数乘法,java,multiplication,Java,Multiplication,在普通数学术语中,-1756046391*-1291488517等于2267913749295792147 当我在java中输入完全相同的方程式时,我得到的答案是:-1756046391*-1291488517=19 有人能解释一下吗?溢出 签出Integer.MAX\u值。Java中的整数是32位2s补码值。您不能超过最大值。发布用于复制此值的确切代码 您很可能正在使用ints。使用LoSs,因为226791374929579214太大以至于不能适应INT.< /P>< P>使用其他人所说的L

在普通数学术语中,-1756046391*-1291488517等于2267913749295792147

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

有人能解释一下吗?

溢出


签出Integer.MAX\u值。Java中的整数是32位2s补码值。您不能超过最大值。

发布用于复制此值的确切代码


您很可能正在使用ints。使用LoSs,因为226791374929579214太大以至于不能适应INT.< /P>< P>使用其他人所说的LoSs,或者如果您的应用程序还不够,请考虑使用<代码> BigInteger < /C> >

< P>当处理非常大的数字时,您需要确保所用的数据类型足够大以存储该数字。在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
因此,正如您所看到的,您的号码几乎可以放入一个
。但是您肯定会考虑到这一点,因此您可能应该使用
BigInt
类:


溢出。签出Integer.MAX_VALUE。尝试以下操作:
-1756046391L*-1291488517
。您正在对基本整数使用未经检查的操作。他应该使用BigInt对象,因为他的数字*5将溢出一个长整数。