c语言运算浮点型转换整形问题

#include<stdio.h>
int main()
{
double c, t;
scanf("%lf",&c);
t=(c-(int)c)*1000;printf("%f ",t);
int b=t;
printf("%d",b);
return 0;
}
假设我输入的是131.01,为什么输出结果b等于9?

img

这个很正常,浮点数有精度问题,甚至不同计算机计算出的结果都有差异。你换一台计算机计算的结果可能就是10.

所以我们才需要定义精度范围。

如果有帮助麻烦您采纳一下