Android Studio返回一个简单数学表达式的错误结果



我正试图根据目的地的传出日期(以毫秒为单位(和天数来计算返回日期(以毫米为单位(。我选择将daysIn*86400000添加到传出日期,其中86400000表示以毫秒为单位的一天。

long newReturn = newOut + (daysIn * 86400000);

这个表达的第二部分似乎不起作用。如果我将daysIn设置为30,daysIn*86400000显然是-1702967296。我预计2592000000,所以这显然会导致我的newReturn值错误
如果值很小,例如2,它工作得很好,所以我不理解这个问题。

以下是变量类型:

long newReturn; 
long newOut; 
int daysIn;

我想可能类型会有问题,但long可以处理大量的数字,如果daysIn是24或更短,这一切都可以。关于什么会导致错误或如何修复错误,有什么想法吗?任何事情都将不胜感激。

标记为重复的问题是关于"如何检查我的操作是否会导致溢出",这对解决上述溢出没有帮助。我重新提出这个问题。


daysInint86400000int,所以daysIn * 86400000是int(一种(并且它溢出。

解决方案是将daysIn设为long,或者将86400000指定为long:即86400000L

long newReturn = newOut + (daysIn * 86400000L); // should work as intended

最新更新