float一共保留位数问题

float一共保留7位数字,3.1234567应该输出3.123456,但是3.1234567就只能输出3.123457,只有小数点正好6位才行,7位按道理是输出小数点后6位啊

img

img

float 用4个字节保存,能表示的范围是-3.402823466×10的38次方到3.402823466×10的38次方,输出浮点数的时候%f默认输出6位小数,超过6位的会进行四舍五入。要想输出7位则用%.7f,输出8位则用%.8f,以此类推

末尾会四舍五入的
用%f输出的话,默认输出6位小数,由于第7位是7,输出时会四舍五入,所以进了1,第6为的6就变成7了

默认保留6位,最后那个7是四舍五入的。

默认就是输出6位呀,你想输出7位要写%.7f呀
你一共有7位,只输出6位,当然会给你四舍五入了

是因为float只能保留6或者7位,所以有的时候不固定,是这个样吗