`
JiongBull
  • 浏览: 7660 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
社区版块
存档分类
最新评论

解惑3:长整除

 
阅读更多

[声明]所有代码均来自Joshua Bloch和Neal Gafter所著的<Java解惑>一书,本人仅因学习需要摘抄和注释,感谢二位作者的知识分享.

 

代码:

 

public class LongDivision {
    public static void main(String[] args) {
        final long MICROS_PER_DAY = 24 * 60 * 60 * 1000 * 1000;
        final long MILLIS_PER_DAY = 24 * 60 * 60 * 1000;

        System.out.println(MICROS_PER_DAY / MILLIS_PER_DAY);
    }
}

 

 结果:

 

5

 

 

分析:

对第一个长整形变量MICROS_PER_DAY进行赋值,24*60*60*1000*1000的值已经超过一个Int型变量表示的

范围,所以将会发生截断,然后对整形进行扩容来为长整形赋值.

对第二个长整形变量MILLIS_PER_DAY 进行赋值,24 * 60 * 60 * 1000的值依旧可以用一个Int型变量存储,

所以不会发生截断

 

 

解决方案代码:

 

public class LongDivision {
    public static void main(String[] args) {
        final long MICROS_PER_DAY = 24L * 60 * 60 * 1000 * 1000;
        final long MILLIS_PER_DAY = 24L * 60 * 60 * 1000;

        System.out.println(MICROS_PER_DAY / MILLIS_PER_DAY);
    }
}

 结果:

 

1000
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics