簡體   English   中英

將long轉換為int得出0

[英]Converting long to int gives 0

我一直在用以下代碼片段進行測試:

public class Test {
    public static int longToInt(long num) {
        return (int) (num);
    }

    public static void main(String[] args) {
        System.out.println(longToInt(100000000L));
    }
}

我運行了它,但longToInt只返回了0。這是怎么回事?

鑄造longint通過去除的頂部的32位完成long 如果long值大於Integer.MAX_VALUE (2147483647)或小於Integer.MIN_VALUE (-2147483648),則最終結果是丟失了大量位,結果是“垃圾”。


話雖如此,但是如果正確編譯並運行它,您提供的代碼就不會像您說的那樣運行。 原始版本應打印出意外的數字,但不能為零。 修改后的版本應按預期打印1000000。


...有沒有一種方法可以在int編號內存儲一個大於Integer.MAX_VALUE的長整數?

沒有。

好吧,嚴格來說是……在某些情況下。 您可以做一些映射數字的操作,例如,如果您知道數字始終在AB的范圍內,並且B - A小於2 32 ,則可以將該范圍內的long int映射到一個int從中減去A

但是,如果您long存儲的數字域的大小大於2 32 ,則在數學上定義此類映射是不可能的 通常是哪個。

因為,您給出的時間不適合int。 給出較小的長度並嘗試! int(32位)長(64位)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM