c - 在 C 意外输出中 float 到 int

标签 c

我在 C 中有以下代码

#include <stdio.h>

int main()
{

    float a = 1.88;
    a =a - (0.25 * 7 + 0.1 * 1);
    a = a *100;
    printf("a = %f\n",a );
    int b =(int) (a);
    printf("b = %d\n", b);
}

b 的值应该是 2 但我得到以下输出-

a = 3.000000
b = 2

为什么会这样?

最佳答案

如果你改变

printf("a = %f\n",a );

printf("a = %.20f\n",a );

输出

a = 2.99999952316284179688

如您所见,这不是 3。

因此转换将其截断为 2。

关于c - 在 C 意外输出中 float 到 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40189877/

相关文章:

C-打印直方图

c - 使用 malloc() 和 free() 指针可能导致内存泄漏,以及与指针表示法混淆

c - 如何使用codeanywhere在C编程中读取文件?

python - 如何将静态成员添加到 Cython 类(来自 python,而不是 C)

c - fread() 返回读取字节数 + 1

c - C 函数应该什么时候返回新分配的内存?

c - long long 与 int 乘法

c++ - SDL 窗口在移动时消失?

c - 在您的 C 代码中使用数百万个 malloc() 和 free() 的结果?

C修改printf()输出到文件