所以我有这个练习从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);
转换如何在这里工作。
答案 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