楼主如果真想弄清楚这个问题的话,建议去看下浮点数的格式.
简单地说就是,在计算机中,浮点数是表示成类似于十进制中的科学计数法那样的形式,只不过是表示成a乘以2的b次方,而不是10的b次方,而且a也是2进制数.float有32位,一部分用来表示a,一部分用来表示b,但这部分位数毕竟是有限的,如果a的实际位数超过了这部分的容量,那么就只能截取掉后面多的位数了,剩下的位数再转换成10进制数后,肯定和你原来想存的数不一样了.
存a的这部分我忘了是几位了,好像是8还是9吧,除去首位有其他用途,后面7位分别表示2的负几次方,而2的-7次方是0.0078125,所以只能保证小数点后6位是有效的