自动转换如何在java中运行?

时间:2015-04-05 14:28:39

标签: java

所以我有这个练习从1到7添加前七个术语,如1/1!+2/2!+3/3!........ 7/7!以下是我的代码:

 public class Problem9 
 {
   public static void main(String args[])
   {
    int num, i;
    float result = 1.0f;
    for(num=2; num<=4; num++)
    {
        i =num;
        int fact_num=1;

        while(i>=1)
        {
            fact_num = i*fact_num;
            i--;
        }
        System.out.println("num = "+num);
        System.out.println("fact = "+fact_num);
        result = result+ (float)num/fact_num;// This line is the one i m   
                                             // talking about
    }
    System.out.printf("The result = %.3f ",result);
   }
  }

那么以下行

之间的区别是什么
 result = result+ (float)num/fact_num;

 result = result+ (float)(num/fact_num);

转换如何在这里工作。

2 个答案:

答案 0 :(得分:2)

(float)(num/fact_num)执行int除法并将结果转换为float,这意味着如果num&lt; fact_num,结果为0.0。

(float)num/fact_num将num转换为float并执行浮点除法,这意味着如果num&lt;结果将不是0.0 fact_num(除非num当然为0)。这是您应该在代码中使用的表单,因为您正在执行结果小于1的分区,因此int division不会给您正确的结果。

答案 1 :(得分:1)

(float)(num/fact_num);

表示将两个整数除法的结果转换为float。最后的答案是浮动。

(float)num/fact_num;

这里将int num强制转换为浮点数。除以整数。

例如:

       int num = 5;
       int fact_num = 2;
       System.out.println((float)(num/fact_num));

将输出:

2.0