为什么即使我使用浮子,5/2也会产生’2’?
我输入了以下代码(没有编译问题或任何东西):
float y = 5/2; printf("%f\n", y);
输出只是: 2.00000
我的数学没错,是吗? 或者我错了/运营商? 这意味着鸿沟不是吗? 5/2应该等于2.5?
任何帮助是极大的赞赏!
5
是int
, 2
是int
。 因此, 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
你必须输入强制转换