在C意外输出中浮动到int

时间:2016-10-22 08:17:53

标签: 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

为什么会这样?

2 个答案:

答案 0 :(得分:6)

如果你改变了

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

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

输出

a = 2.99999952316284179688

你可以看到这不是3。

因此转换会将其截断为2。

答案 1 :(得分:0)

当float被转换为int时,只存储整数部分,即2.9只存储2并且剩余被截断。 在分裂的情况下类似的一个

#include<stdio.h>
main()
{
    int a=12/5;
    printf("%d\n",a);
}

这里结果是2.4,但.4被截断..