繁体   English   中英

将 long 转换为 Int 返回“-1”?

[英]Casting a long to an Int returns in '-1'?

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

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

public static final long CONST = 1000 * 62;

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

如果它是安全的,则不需要显式强制转换。

不,它不安全。 不要这样做。 因为,A Long / long64 位,并且可以保存比Integer / int只有32 位更多的数据。 进行转换将导致信息丢失。

如果您想这样做,请这样做

使用.intValue()Long值转换为int值。

long是 64 位, int是 32 位,所以不,它不安全。

尝试

int anIntVar = Math.rint(aLongVar);

如果 long 中的值适合 int,您可以将 long 转换为 int 并获得有意义的结果。 如果没有,您将被截断高位。 在您的示例中,您没有在进行除法之前显示分子中的内容,但是在正确的输入下,-1 肯定不是不可能的值。

合法吗? 是的。 安全吗? 不,除非您进行范围检查,或者确信您对输入足够了解。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM