java - 为什么 24 * 60 * 60 * 1000 * 1000 除以 24 * 60 * 60 * 1000 在 Java 中不等于 1000?

标签 java puzzle math

为什么 24 * 60 * 60 * 1000 * 1000 除以 24 * 60 * 60 * 1000 在 Java 中不等于 1000?

最佳答案

因为乘法溢出了 32 位整数。在 64 位中没问题:

public class Test
{
    public static void main(String[] args)
    {
        int intProduct = 24 * 60 * 60 * 1000 * 1000;
        long longProduct = 24L * 60 * 60 * 1000 * 1000;
        System.out.println(intProduct); // Prints 500654080
        System.out.println(longProduct); // Prints 86400000000
   }
}

显然,在乘法溢出后,除法不会“撤消”溢出。

关于java - 为什么 24 * 60 * 60 * 1000 * 1000 除以 24 * 60 * 60 * 1000 在 Java 中不等于 1000?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1301368/

相关文章:

java - 无法解决 Android Studio 2.2 中的所有依赖项错误

C 代码 : How does these even work?

java - TreeSet搜索花费很长时间,谜题: to find lucky numbers

c++ - (num+mod)%mod 语句需要什么?

ios - 用于在多个单位之间转换值的动态数学

javascript - 二维环形的曼哈顿距离

java - 使用 SimpleDateFormat 获取 UTC 日期

java - Play Framework 2.0 json - 接收空 JsonNode 对象

java - 如何从对象的方法外部访问对象

c - 在 c 二进制中,测试数字是否在范围内