Java : large integer numbers error

标签 java numbers integer

我正在尝试用 Java 执行以下数学方程式:

(44334*(220*220))+ (81744*220) + 39416)

当我在 WolframAlpha(或 Google)中输入相同的方程时,我得到:

2163788696

在java中我得到负数..

我一直在努力找出发生这种情况的原因,但没有运气。 我还尝试将答案保存在 BigInteger 中,但随后我得到负值,因为数字太大。

我该怎么办?

最佳答案

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

System.out.println("Result: " +
    (44334L * 220 * 220 + 81744 * 220 + 39416));  // 2163788696

加号运算符是左结合的(无论是用于字符串连接还是加法),所以如果整个算术表达式没有括号,它会将子表达式的结果作为单独的字符串从左到对。

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

您可以将整个算术表达式括起来以避免这种情况。

关于Java : large integer numbers error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14095065/

相关文章:

c++ - 整数产生十六进制值错误

java - 如何扩展 CassandraRepository

java - 使用 Java 查找单词

Javascript:包含随机数的网址

google-chrome - 无法在 'setSelectionRange' 上执行 'HTMLInputElement'

c++ - 如何将数字转换为 0.mynumber

java - 使用多个数据库模式

java - 将字节数组作为类加载到Java系统包中

python-3.x - 如何编写一个函数,在不使用 return 的情况下更改原始整数列表?

java - 如何将Byte数组转换为整数,然后转换为字符串,以显示整数值?