2012-10-06 51 views
0

有人可以解釋類型轉換是如何工作的:int y =(int)x; 謝謝java中的類型轉換:Integer和Double

public class typecast 
{ 
public static void main(String [] args) 
{ 
    double x=10.5; 
    int y=(int) x; 
    System.out.println("x="+x); 
    System.out.println("y="+y); 
} 
} 
+1

您是否嘗試打印'y'的值。你得到了什麼??你不明白的是什麼? –

+0

你能解釋一下在這兩行中你覺得神祕嗎? – user1406062

回答

5

類型轉換執行縮小類型轉換。確切的轉換取決於雙倍值,如下所示:

  • 如果它在int值的範圍內,則會向零調整。
  • 如果超出範圍或是「Inf」值,則轉換根據符號給出Integer.MIN_VALUEInteger.MAX_VALUE
  • 如果它是「NaN」值,則轉換爲零。

參考:JLS 5.1.3

注:「圓形向零」被定義爲如下:

「Java編程語言朝向零的浮點值轉換爲整數(當使用圓§5.1.3),在這種情況下,它的作用就像截斷數字一樣,捨棄尾數位。舍入到零時,其結果選擇格式的值最接近數值而不超過無限精度的結果

+0

更詳細的描述給你。謝謝斯蒂芬,我只是懶得去查看規格,並把它放到更技術更清潔的地方。 – Drizzt321

0

在這種特殊情況下,如果你嘗試採取雙重(變量x),併爲其分配的價值爲int(變量y)的代碼將無法編譯。所以你必須明確告訴編譯器將類型從double轉換爲int。當它這樣做時,在這種特殊情況下,我相信它會減少小數部分而不是四捨五入。我最後一點可能是錯的。

相關問題