为什么向 long 变量增加值会使它变低?
Why adding value to a long variable makes it lower?
我正在尝试将 System.long a = System.currentTimeMillis() + ((long)30 * 24 * 60 * 60 * 1000);
增加 30 天,但它正在降低价值?为什么?这是我试过的
int days = 30;
long a = System.currentTimeMillis();
long b = a + (days * 24 * 60 * 60 * 1000);
根据我当时运行的代码,结果是:
a = 1646737213282
, b = 1645034245986
为什么 b
< a
?
问题是超出了整数范围。最大整数范围从
-2,147,483,648 (-231) to 2,147,483,647 (231-1)
相乘时,它存储为 int
。但是,这不是限制。因此,解决方案是将其解析为一个 long。您可以在下面查看我的代码:
int days = 30;
long a = System.currentTimeMillis();
long b = a + ((long)days * 24 * 60 * 60 * 1000);
System.out.println("a = " + a + " b = " + b);
但是如果要优化代码,这段代码会更好:
long a = System.currentTimeMillis() + ((long)30 * 24 * 60 * 60 * 1000);
System.out.println("a = " + a);
它节省了你的 2 行代码
但是,我也希望你使用一种方法
long addDays(int days){
return System.currentTimeMillis() + ((long)days * 24 * 60 * 60 * 1000);
}
然后
int a = addDays(30);
我正在尝试将 System.long a = System.currentTimeMillis() + ((long)30 * 24 * 60 * 60 * 1000);
增加 30 天,但它正在降低价值?为什么?这是我试过的
int days = 30;
long a = System.currentTimeMillis();
long b = a + (days * 24 * 60 * 60 * 1000);
根据我当时运行的代码,结果是:
a = 1646737213282
, b = 1645034245986
为什么 b
< a
?
问题是超出了整数范围。最大整数范围从
-2,147,483,648 (-231) to 2,147,483,647 (231-1)
相乘时,它存储为 int
。但是,这不是限制。因此,解决方案是将其解析为一个 long。您可以在下面查看我的代码:
int days = 30;
long a = System.currentTimeMillis();
long b = a + ((long)days * 24 * 60 * 60 * 1000);
System.out.println("a = " + a + " b = " + b);
但是如果要优化代码,这段代码会更好:
long a = System.currentTimeMillis() + ((long)30 * 24 * 60 * 60 * 1000);
System.out.println("a = " + a);
它节省了你的 2 行代码
但是,我也希望你使用一种方法
long addDays(int days){
return System.currentTimeMillis() + ((long)days * 24 * 60 * 60 * 1000);
}
然后
int a = addDays(30);