float和double的输入和输出

img


为什么这个输出值为0
而这个不一样

img

还想问一下为啥float的精度只有小数点后六位,他的范围不只吧?E的指数为不是有8比特么,没懂呢

浮点型不能用%d输出
浮点数精度不是小数点后六位,二是包含整数部分总共就6、7位是精确的

1.为什么这个输出值为0?
因为

printf("%d\n", f);

float 类型所占字节数为4,int所占字节数为2,取数据时只取了一半的数据,所以才是零
2.还想问一下为啥float的精度只有小数点后六位,他的范围不只吧?E的指数为不是有8比特么,没懂呢?
C语言中,%f表示保留7位有效数字7位有效数字: 是指 整数部分 和小数部分一共7位,有些初学者还会把小数点也算进去,其实这是不对的。
在默认情况下以%f格式输出的情况下会输出6位小数,但并不能保证这6位小数有效,即:是否有效还要看整数位和小数位加在一起是否超过7位。另外,我们要知道:有效数字的位数与指定输出的小数位数(%.7f)是两码事,%.mf 格式是自己设置需要输出几位小数。