即使我使用浮点数,为什么 5/2 也会导致“2”?

Ale*_*ord 3 c math floating-point precision division

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

float y = 5/2;
printf("%f\n", y);
Run Code Online (Sandbox Code Playgroud)

输出很简单: 2.00000

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

任何帮助是极大的赞赏!

R_K*_*app 7

5int并且2int。因此,5/2将使用整数除法。如果您55.0f(或22.0f)替换,制作intsa 之一float,您将获得浮点除法并获得2.5您期望的结果。您也可以通过显式转换分子或分母(例如((float) 5) / 2)来达到相同的效果。

  • @alk:我只是喜欢把零放在那里——它们没有任何实际用途,但由于我的视力衰退,我经常错过“.”本身,但我还没有错过“.0”。 (4认同)
  • 然后我建议使用`.00`,因为你很可能有两只眼睛。;-) (2认同)