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 * 100086400000。如果将其乘以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/

10-10 01:13
查看更多