当分成一个小的负数时,我得到0

时间:2014-04-14 21:46:21

标签: c floating-point int printf type-conversion

在我目前的程序中,我遇到了一个问题,当我将数字除以较大的数字时,我只给出了0.例如,如果我将-272除以400,则得到0。

y=x/400;
printf("%f\n", y);

这是造成问题的唯一代码。 x是负整数1-500,y初始化为float。

我哪里错了?

2 个答案:

答案 0 :(得分:2)

除法运算根据操作数推导出它的结果。如果两个操作数均为int,则结果为int。在您的情况下,x400都是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