我在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
为什么会这样?
答案 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被截断..