在我目前的程序中,我遇到了一个问题,当我将数字除以较大的数字时,我只给出了0.例如,如果我将-272除以400,则得到0。
y=x/400;
printf("%f\n", y);
这是造成问题的唯一代码。 x是负整数1-500,y初始化为float。
我哪里错了?
答案 0 :(得分:2)
除法运算根据操作数推导出它的结果。如果两个操作数均为int
,则结果为int
。在您的情况下,x
和400
都是int
,因此/
的结果为int。然后,此int
会转换为float
,因为y
是浮点数,但结果已被截断为int
。
您需要将至少一个操作数转换为float:
y = (float) x / 400;
或
y = x / 400.0f
答案 1 :(得分:2)
写这样的东西y = x / 400.0f或y =(float)x / 400