請注意我不在尋找代碼來將double或int縮小爲int。管理縮小雙向int的規則
作爲每JLS - $ 5.1.3 Narrowing Primitive Conversion
帶符號的整數的一種積分類型T ,縮小轉換簡單地丟棄所有,但n個最低階位,其中n是用於表示類型T.比特數
所以,當我盡力縮小一個260(二進制表示爲100000100
),以一個字節然後結果是4,因爲最低8位是00000100
這是一個十進制4或長值4294967296L(二進制表示100000000000000000000000000000000
)將字節則結果爲0。
現在,爲什麼我想知道縮小雙重規則爲int的規則,字節等是當我縮小一個double
值4294967296.0
那麼結果是2147483647
但是當我縮小長4294967296L
值然後結果是0
。
我已經理解了對int,byte等的長期縮小(拋棄了所有的n個最低位),但是我想知道在雙縮小的情況下會在什麼情況下進行。
答案是在你引用的那行之後有幾行:_將浮點數轉換爲整型T需要兩步:[...] _ –
我確實讀過它,但我真的無法從中得到答案。我可以理解,它會從1.b完成,但無法理解。如果你可以請投擲燈光,我會非常感激。 – hagrawal
我認爲它會在某種程度上理解雙重浮動縮小規則,受IEEE 754四捨五入。 – hagrawal