[英]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 / long
有64 位,並且可以保存比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.