2013-10-25 22 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, - >浮点结果。