我正在尝试通过每次迭代将时间戳设置为X天来迭代SQL查询。我注意到,我的日期在第25天回来后就开始回归废话。我发现Android Studio在此代码示例中的第二行显示“表达式中的数字溢出”警告:
int daysBack = 25;
long dayBeginningMilis = getTodaysBeginningMilis() - 86400000 * daysBack;
getTodaysBeginningMilis
是我不言自明的方法。为什么会显示此警告? 86400000是24小时内的milis数。
答案 0 :(得分:2)
看来这部分" 86400000 * daysBack"导致数字溢出,因为两个数字都是整数,乘法导致整数超出范围。为了解决这个问题,我已经制作了所有类型的长类型:
long daysBack = 25L;
long dayBeginningMilis = getTodaysBeginningMilis() - 86400000L * daysBack;