为什么即使我使用浮点数,5/2 的结果也是“2”?

Why does 5/2 results in '2' even when I use a float?

我输入了以下代码(没有编译问题或任何问题):

float y = 5/2;
printf("%f\n", y);

输出很简单:2.00000

我的数学没有错吧?还是 / 操作员我错了?这意味着分裂不是吗? 5/2 应该等于 2.5?

非常感谢任何帮助!

5 是一个 int2 是一个 int。因此,5/2 将使用整数除法。如果将 5 替换为 5.0f(或将 2 替换为 2.0f),使 int 之一成为 float,您将得到浮点数除法并得到你期望的 2.5。您也可以通过显式转换分子或分母(例如 ((float) 5) / 2)来达到相同的效果。

Why does 5/2 results in '2' even when I use a float?

因为你不是使用float”。 5/2是整数除法。只有它的结果 (2) 被隐式转换为 float 成为 2.(注意点)。

你应该进行适当的类型转换。

float y = (float) 5/2 

程序会将数字视为 int
它正在划分两个 int 并将其写入 float。因此,答案是 2.0

您必须输入 cast