public static final long MONTH_IN_MILLIS = 30*24*60*60*1000; 一看就明白这个是定义一月大概的微妙数.
当我在计算两个月之间大概的月的个数时, 总是发现他返回一个负数, 奇怪, 后面调试发现 MONTH_IN_MILLIS = -1702967296. 呵呵, 原来overflow了.
public static final long MONTH_IN_MILLIS = (30l)*24*60*60*1000;改成这样就ok了.
当我在计算两个月之间大概的月的个数时, 总是发现他返回一个负数, 奇怪, 后面调试发现 MONTH_IN_MILLIS = -1702967296. 呵呵, 原来overflow了.
public static final long MONTH_IN_MILLIS = (30l)*24*60*60*1000;改成这样就ok了.
本文介绍了一个关于Java中整型变量溢出的实际案例。在计算两个时间点间大致月份数量时,由于常量定义不当导致计算结果出现负数。通过调整常量定义方式解决了该问题。

被折叠的 条评论
为什么被折叠?



