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)