为什么即使我使用浮点数,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
是一个 int
,2
是一个 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
我输入了以下代码(没有编译问题或任何问题):
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
)来达到相同的效果。
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