public static void main(String[] args) {
final long a= 24 * 60 * 60 * 1000 * 1000;
final long b= 24 * 60 * 60 * 1000;
System.out.println(a/b);
}
它应该返回1000,但是为什么返回5?
最佳答案
24 * 60 * 60 * 1000
是86400000
。如果将其乘以1000
,它将溢出int
类型(因为int
可以容纳的最大值是2147483647
,比86400000000
小得多),您将得到500654080
对于a
。
然后,将结果除以86400000
时,将得到5
。
为了解决此问题,您需要明确指定乘法结果为long
-这是因为Java中的所有数字运算符都会产生整数,除非明确指示要产生其他数字类型。
只需在某些操作数上添加L
就足够了:
final long a = 24 * 60 * 60 * 1000 * 1000L;
关于java - Java部门返回错误结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31336101/