关于c语言中float的疑问

RT,a=123.123,为什么后面输出的全是2?
2024-12-23 11:27:54
推荐回答(3个)
回答1:

这是10进制数据变2进制float型内存数据,再由内存2进制 数据转10进制数据 输出过程中,32位字长截断误差引起的。
float 有效数字精度,只有6-7位10进制数位,21.290001 有8位,所以 最后一个1是不可靠的。 你可以用 %g 格式输出,或输出时限定小数位数。

回答2:

因为a是float型,在使用printf函数时,正确的格式应该是%f,而你却使用了%d的打印格式,首先就导致了输出错误,因此导致了后面一系列的系统输出错误,如果你将
printf("%d,%f,%lf,%e",(int)a,a,a,a);的话,那就不会出问题

回答3:

我会先怀疑没有rebuild到, 结果是旧的; 我实测不会这样.