在 Java 中将 long 转换为 int
Converting long to int in Java
我正在使用 System.currentTimeMillis() 获取纪元以来的秒数。
这是一个例子。
long enable_beacon_timestamp = System.currentTimeMillis()/1000;
println(enable_beacon_timestamp);
println(int(enable_beacon_timestamp));
enable_beacon(int(enable_beacon_timestamp));
并且输出给出:
>>1424876956
>>1424876928
所以问题是转换值不匹配。我想要的是让第一个输出与整数相同。
你能提供一些发生这种情况的背景吗?
您的转换语法不正确。您还需要注意 long
s 可能比 int
.
的最大值大得多
int y;
if ( enable_beacon_timestamp > (long)Integer.MAX_VALUE ) {
// long is too big to convert, throw an exception or something useful
}
else {
y = (int)enable_beacon_timestamp;
}
也许试试这样的东西...
你可以这样写
try{
int castedValue = ( enable_beacon_timestamp < (long)Integer.MAX_VALUE )?(int)enable_beacon_timestamp : -1;
}
catch (Exception e)
{
System.out.println(e.getMessage());
}
Java 东南 8
- 为避免自己进行计算,您可以使用
TimeUnit#convert
。
- 为了避免由于溢出而得到不希望的结果,您可以使用
Math.toIntExact
如果值溢出 int
. 则抛出异常
演示:
import java.util.concurrent.TimeUnit;
public class Main {
public static void main(String[] args) {
long seconds = TimeUnit.SECONDS.convert(System.currentTimeMillis(), TimeUnit.MILLISECONDS);
System.out.println(seconds);
try {
int secondInt = Math.toIntExact(seconds);
System.out.println(secondInt);
// ...
} catch (ArithmeticException e) {
System.out.println("Encountered error while casting.");
}
}
}
输出:
1621358400
1621358400
我正在使用 System.currentTimeMillis() 获取纪元以来的秒数。 这是一个例子。
long enable_beacon_timestamp = System.currentTimeMillis()/1000;
println(enable_beacon_timestamp);
println(int(enable_beacon_timestamp));
enable_beacon(int(enable_beacon_timestamp));
并且输出给出:
>>1424876956
>>1424876928
所以问题是转换值不匹配。我想要的是让第一个输出与整数相同。
你能提供一些发生这种情况的背景吗?
您的转换语法不正确。您还需要注意 long
s 可能比 int
.
int y;
if ( enable_beacon_timestamp > (long)Integer.MAX_VALUE ) {
// long is too big to convert, throw an exception or something useful
}
else {
y = (int)enable_beacon_timestamp;
}
也许试试这样的东西...
你可以这样写
try{
int castedValue = ( enable_beacon_timestamp < (long)Integer.MAX_VALUE )?(int)enable_beacon_timestamp : -1;
}
catch (Exception e)
{
System.out.println(e.getMessage());
}
Java 东南 8
- 为避免自己进行计算,您可以使用
TimeUnit#convert
。 - 为了避免由于溢出而得到不希望的结果,您可以使用
Math.toIntExact
如果值溢出int
. 则抛出异常
演示:
import java.util.concurrent.TimeUnit;
public class Main {
public static void main(String[] args) {
long seconds = TimeUnit.SECONDS.convert(System.currentTimeMillis(), TimeUnit.MILLISECONDS);
System.out.println(seconds);
try {
int secondInt = Math.toIntExact(seconds);
System.out.println(secondInt);
// ...
} catch (ArithmeticException e) {
System.out.println("Encountered error while casting.");
}
}
}
输出:
1621358400
1621358400