`
030710314
  • 浏览: 21511 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java Long型数值计算的自动截断

    博客分类:
  • JAVA
 
阅读更多

在处理Long 型时间值的计算过程中,被JAVA 狠狠的坑了一次,如下的程序:

long thisTime = 1380000000000;
long monthAgo = thisTime - 30 * 24 * 60 * 60 * 1000;

本以为,JAVA 会将后面计算的结果转换成 long 值后再与前面的计算,调试过程中发现,java 是先计算后面的数值,为 int 类型,结果超过了 int 类型,被截断了,然后再将这个截断的数值转换成 long 型,再与前面的 thisTime 计算。

 

     坑死了,这样计算出来的结果能对么,如果在计算的某一步中,觉得值会超过 long ,那么就需要在这一步之前将计算结果转为 long 型后再计算,因此修改后代码为:

long monthAgo = thisTime - 30 * 24 * 60 * 60 * 1000L;

 这样结果就正确了。

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics