Java:大整数错误

phe*_*sou 3 java integer numbers

我想在Java中使用以下数学公式:

(44334*(220*220))+ (81744*220) + 39416)
Run Code Online (Sandbox Code Playgroud)

当我在WolframAlpha(或谷歌)中输入相同的等式时,我得到:

2163788696
Run Code Online (Sandbox Code Playgroud)

在java中我得到负数..

我一直在努力找出为什么会这样,但没有运气.我也尝试在BigInteger中保存答案,但后来我得到负值,因为数字太大了.

我该怎么办?

jsp*_*cal 6

编辑:要处理整数环绕,请使用long:

System.out.println("Result: " +
    (44334L * 220 * 220 + 81744 * 220 + 39416));  // 2163788696
Run Code Online (Sandbox Code Playgroud)

plus运算符是左关联的(无论它是用于字符串连接还是添加),因此如果整个算术表达式没有括号,则它将子表达式的结果从左到右连接为单个字符串.

左操作数确定+是否用于字符串连接或添加.在这种情况下,第一个操作数是一个字符串,因此右侧((44334*(220*220)))也被转换为字符串.第一个+运算符的结果是一个字符串,并用作另一个+字符串连接操作的左侧.下一个operand((81744*220))再次转换为字符串.

您可以在整个算术表达式周围加上括号以避免这种情况.