簡體   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