小编典典

Java部门返回错误结果

java

 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?


阅读 208

收藏
2020-11-23

共1个答案

小编典典

24 * 60 * 60 * 100086400000。如果你用它乘1000,它会溢出int类型(因为这的最大值int可容纳是2147483647比少了很多86400000000),你会得到500654080a

然后,将结果除以86400000,您将得到5

为了解决此问题,您需要明确指定乘法的结果将是long-这是因为Java中的所有数字运算符都会产生整数,除非明确指示要产生其他数字类型。

只需L在一些操作数上附加a 就足够了:

final long a = 24 * 60 * 60 * 1000 * 1000L;
2020-11-23