在Java中将long转换为int是否安全?
出于某种原因,下面的代码,我得到'-1'作为anIntVar。我检查过'aLongVar'不是-1。
public static final long CONST = 1000 * 62;
long aLongVar
int anIntVar = (int)(aLongVar/ CONST);
答案 0 :(得分:2)
如果它是安全的,则不需要明确的演员。
答案 1 :(得分:2)
不,它不安全。不要这样做。因为,A Long / long
具有 64位,并且只能保存比Integer / int
32位更多的数据。进行转换会导致信息丢失。
如果您希望这样做,请执行此操作
使用.intValue()
将Long
值转换为int
值。
答案 2 :(得分:1)
A long
是64位,int
是32位,所以不,它不安全。
答案 3 :(得分:1)
尝试
int anIntVar = Math.rint(aLongVar);
答案 4 :(得分:0)
如果long中的值适合int,则可以将long转换为int并获得有意义的结果。如果没有,您将获得高位截断。在你的例子中,你没有在分割之前显示分子中的内容,但是在给定正确输入的情况下-1肯定不是一个不可能的值。
合法吗?是。安全吗?不,除非你做范围检查,或者确信你已经足够了解你的输入。