Java Long无法正常打印

时间:2011-03-04 14:04:57

标签: java

这一定非常愚蠢但是,我正在努力做到以下几点:

long mult  = 2147483647 + 2147483647 + 2;
System.out.println(mult);  // result = 0

现在,我的变量mult将是一个10位数字,在很长的范围内。所以我不明白为什么它会因此打印出0。任何人都可以解释原因吗?

3 个答案:

答案 0 :(得分:12)

使用int代替long进行算术运算,因为三个常数值为int s。您分配给long变量这一事实无关紧要。试试这个:

long mult  = 2147483647L + 2147483647L + 2L;

如果你小心的话,你可能只需要将其中一个文字作为一个长文字 - 但我个人会将其应用于所有这些文字,只是为了明确你想要long算术为了一切。

答案 1 :(得分:3)

怎么样:

long mult = 2147483647L + 2147483647 + 2;

答案 2 :(得分:1)

那是因为当你直接给出num1 + num2之类的任何数字时,它们被视为整数,因为在这种情况下值超出界限,你将获得0或其他输出,具体取决于输入。

您可以通过更改为

轻松解决此问题
long mult  = 2147483647;
mult += 2147483647;
mult += 2;
System.out.println(mult);