2013-10-25 23 views
1
  1. 爲什麼的C值是2.0和2.5,儘管它們有相同的數據類型
  2. 如何轉換髮生在A/B類型鑄造如何在java中工作?

    public static void main(String[] args) 
         { 
          int a = 5,b=2; 
          float c; 
          c=a/b; 
          System.out.println(c); 
          c=(float)a/b; 
          System.out.println(c); 
         } 
    
+0

歡迎回來* Integer Division *。 –

+0

'a'是一個整數,'b'是一個整數,所以沒有明確的轉換,結果也是一個整數 – joval

+2

注意類型轉換優先於'/'運算符,這樣' )a/b'與'((float)a)/ b'相同。如果你寫了'(float)(a/b)',你仍然會得到'2.0'。 – ajb

回答

3

答案在於理解的是,儘管宣稱c作爲float,整數除法仍然與a/b發生。 Java中的整數除法將截斷任何小數部分(因此它可以保留爲int)。只有當它被分配到c時被隱式轉換爲float,並且打印2.0

(float)a/b澆鑄到float改變a5.0f和力浮點分割前的結果被分配給c,所以正確的結果2.5被打印。

0

在第一條語句中,計算了a/b。由於這兩個變量都是整數,結果也是一個整數:2。在您的第二個聲明中,a首先轉換爲float,然後除以b。作爲其中一個值是float,結果也是float2.5

0

第一個除法是int/int - > int結果。 第二個是Float/int, - >浮點結果。