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中保存答案,但后来我得到负值,因为数字太大了.
我该怎么办?
编辑:要处理整数环绕,请使用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))再次转换为字符串.
您可以在整个算术表达式周围加上括号以避免这种情况.