单精度实数的有效位数问题!

单精度实数的有效位数一般为7位

那么为什么y的输出是-789.1222986,7位有效位数不应该是-789.1234吗??

float x=123.4567,y=-789.1234;
printf("%f\n%f",x,y);

 

浮点数存储方式决定了存储的数据不是精确的,可能有更多的余数,我机器输出是-789.123413,

通过格式化输出你想要的位数

printf("%.4f\n%.4f",x,y);