为什么即使我使用浮子,5/2也会产生’2’?

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

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

输出只是: 2.00000

我的数学没错,是吗? 或者我错了/运营商? 这意味着鸿沟不是吗? 5/2应该等于2.5?

任何帮助是极大的赞赏!

5int2int 。 因此, 5/2将使用整数除法。 如果用5.0f替换5 (或者用2.0f替换2 ),使其中一个int sa float ,你将获得浮点除法并得到你期望的2.5 。 您也可以通过显式地转换分子或分母(例如((float) 5) / 2 )来实现相同的效果。

为什么即使我使用浮子,5/2也会产生’2’?

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

你应该做适当的类型铸造。

 float y = (float) 5/2 

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

你必须输入强制转换