将一个long转换为Int返回'-1'?

时间:2011-06-13 18:11:24

标签: java

在Java中将long转换为int是否安全?

出于某种原因,下面的代码,我得到'-1'作为anIntVar。我检查过'aLongVar'不是-1。

public static final long CONST = 1000 * 62;

long aLongVar
int anIntVar =  (int)(aLongVar/ CONST);

5 个答案:

答案 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肯定不是一个不可能的值。

合法吗?是。安全吗?不,除非你做范围检查,或者确信你已经足够了解你的输入。