hgu*_*ser 3 java math numbers long-integer
码:
public class Main{
public static void main(String[] a){
long t=24*1000*3600;
System.out.println(t*25);
System.out.println(24*1000*3600*25);
}
}
Run Code Online (Sandbox Code Playgroud)
这打印:
2160000000
-2134967296
Run Code Online (Sandbox Code Playgroud)
为什么?
感谢所有的答复.
是数字后使用L的唯一方法吗?
我试过了,(long)24*1000*3600*25
但这也是消极的.
Ade*_*ari 11
要清楚地解释清楚,
System.out.println(24*1000*3600*25);
Run Code Online (Sandbox Code Playgroud)
在上面的陈述实际上是int
文字.要将它们视为long
文字,你需要将它们作为后缀L
.
System.out.println(24L*1000L*3600L*25L);
Run Code Online (Sandbox Code Playgroud)
警告,一个小l
就足够了,但看起来像资本I
或1
有时.资本I
在这里没有多大意义,但阅读它1
确实可以给你带来困难.此外,即使是足够的单一价值L
也会产生结果long
.
在第一种情况下,您正在打印,long
但在第二种情况下,您将其打印为int
.
并且int
范围从:-2 ^ 31到2 ^ 31 - 1,它正好在你计算的范围之下(int max:2147483647 you:2160000000),所以你将int溢出到负范围.
您也可以强制使用第二个long
:
System.out.println(24L*1000*3600*25);
Run Code Online (Sandbox Code Playgroud)