这个float没有关系,只跟printf里面的%f有关系,%f默认是保留小数点后面6位数字。因此会把后面的0打印出来。
有效数字不等于尾数有几位,只是说有效数字后的尾数如果有,那么没有意义(你加上它未必比真实值更接近,也许反而远离)。为什么是0,我也不知道,这个也许有精度误差。但是更可能是答案出错了。