【发布时间】:2014-12-28 06:54:04
【问题描述】:
例如:
int number1 = 1, number2= 2;
float variable = (float)number1/(float)number2;
取而代之的是,为什么我们不能只使用一次“float”?例如:
int number1 = 1, number2= 2;
float variable = (float)(number1/number2);
【问题讨论】:
-
因为整数除法会截断。使用
printf显示两个计算的结果,你会发现第一个结果是0.5,第二个结果是0.0,因为1/2被截断为0。 -
嗯,
number1/number2是整数除法。事实上,第二个示例中的(float)没有任何区别。 -
因为除法运算会在转换为浮点数之前截断小数位。
-
子表达式的求值通常不受它出现的上下文的影响。因为
number1和number2都是int类型,所以(number1/number2)使用int-by-int除法计算。将结果转换为float不会改变这一点。