我输入了以下代码(没有编译问题或其他问题):
float y = 5/2;
printf("%f\n", y);
输出结果只是:
2.00000
我的数学没错吧?或者我对 / 运算符理解有误?它表示除法,5/2 应该等于 2.5 吧?非常感谢您的帮助!
我输入了以下代码(没有编译问题或其他问题):
float y = 5/2;
printf("%f\n", y);
2.00000
我的数学没错吧?或者我对 / 运算符理解有误?它表示除法,5/2 应该等于 2.5 吧?5
是一个int
类型,2
也是int
类型。因此,5/2
将使用整数除法。如果您将5
替换为5.0f
(或将2
替换为2.0f
),使其中一个int
变成float
,则会得到浮点除法并获得期望的2.5
。您还可以通过显式转换分子或分母(例如((float) 5) / 2
)来实现相同的效果。5.
or 2.
will do. - alk.00
,因为你很可能有两只眼睛。;-) - alk为什么我使用浮点数,5/2的结果却是'2'?
因为你没有“使用float
”。5/2
是一个整数除法。只有它的结果(2
)会被隐式转换为float
,成为2.
(注意小数点)。
float y = (float) 5/2
程序将把数字视为 int
类型。
它将两个 int
相除,并将结果写入 float
。因此,答案是 2.0。
您必须进行类型转换。