“表达式中的数字溢出”操纵时间戳
"Numeric overflow in expression” manipulating timestamps
我试图通过在每次迭代中将时间戳设置为提前 X 天来迭代 SQL 查询。我注意到,一旦搜索到第 25 天,我的约会对象就开始返回废话。我发现 Android Studio 在此代码示例中的第二行显示 "Numeric overflow in expression" 警告:
int daysBack = 25;
long dayBeginningMilis = getTodaysBeginningMilis() - 86400000 * daysBack;
getTodaysBeginningMilis
是我不言自明的方法。为什么会显示此警告? 86400000是24小时的milis数。
似乎“86400000 * daysBack”这部分导致数值溢出,因为两个数字都是整数,乘法导致整数越界。为了解决这个问题,我把所有的数字都变成了 long 类型:
long daysBack = 25L;
long dayBeginningMilis = getTodaysBeginningMilis() - 86400000L * daysBack;
我试图通过在每次迭代中将时间戳设置为提前 X 天来迭代 SQL 查询。我注意到,一旦搜索到第 25 天,我的约会对象就开始返回废话。我发现 Android Studio 在此代码示例中的第二行显示 "Numeric overflow in expression" 警告:
int daysBack = 25;
long dayBeginningMilis = getTodaysBeginningMilis() - 86400000 * daysBack;
getTodaysBeginningMilis
是我不言自明的方法。为什么会显示此警告? 86400000是24小时的milis数。
似乎“86400000 * daysBack”这部分导致数值溢出,因为两个数字都是整数,乘法导致整数越界。为了解决这个问题,我把所有的数字都变成了 long 类型:
long daysBack = 25L;
long dayBeginningMilis = getTodaysBeginningMilis() - 86400000L * daysBack;