c - 为什么即使我使用 float ,5/2 的结果也是 '2'?

标签 c math floating-point precision division

<分区>

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

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

输出很简单:2.00000

我的数学没有错吧?还是/运算符(operator)我错了?这意味着 split 不是吗? 5/2 应该等于 2.5?

非常感谢任何帮助!

最佳答案

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

关于c - 为什么即使我使用 float ,5/2 的结果也是 '2'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40264523/

相关文章:

c - 为什么第一个 printf 需要更长的时间?

c - 变量变为 1

c++ - Directx-局部轴矩阵平移

python - 如何在极坐标半圆管内用直角坐标画曲线?

python - 将两个原始值转换为 32 位 IEEE float

c - c中的字符串连接,不使用函数

c - 为 Lua : how do I create nested tables of functions? 包装一个 C 库

algorithm - 大整数的除法(模数)(最多 200 位)

java - Java 中的 float

javascript - 在 Javascript 中乘以 float 时,这是否是处理舍入错误的可靠方法?