use*_*310 9 java android long-integer
我正在尝试在我的Android应用程序中做一些基本的计算内容来比较一个Date.getTime()值和一些计算的东西.
我在数据库查询期间进行的计算是:
long minus = pauseDays * 24 * 60 * 60 * 1000;
Run Code Online (Sandbox Code Playgroud)
所以基本上我计算的是毫秒值pauseDays.如果pauseDays变大(我说的是90天左右),就会发生一些奇怪的事情.计算结果为负数.
奇怪的是,结果应该是7776000000,所以它应该小于Long.MAX_VALUE.有人可以向我解释为什么我在这里得到负数吗?
Eri*_*ric 22
原因可能是因为pauseDays是一种int类型,对吗?然后你将它乘以另一堆ints,然后将其转换为long.
考虑一下:
public class Main {
public static void main(String[] args) {
int pauseDays = 90;
long minus = pauseDays * 24 * 60 * 60 * 1000;
System.out.println(minus);
long pauseDaysL = 90L;
long minusL = pauseDaysL * 24L * 60L * 60L * 1000L;
System.out.println(minusL);
}
}
Run Code Online (Sandbox Code Playgroud)
这个输出是:
-813934592
7776000000
Run Code Online (Sandbox Code Playgroud)
请注意,第一个long minus使用整数来生成其值.第二个long minusL使用所有长整数值.
| 归档时间: |
|
| 查看次数: |
2811 次 |
| 最近记录: |