#include <stdio.h> void main() { double f; scanf("%lf",&f); printf("%f or %e\n",f,f); return 0; }
http://bbs.csdn.net/topics/390676437
float形有效数字超过指定长度后,不能保证后面数字的精度,float和double的精度是由尾数的位数来决定的。 float的指数位有8位,而double的指数位有11位,分布如下: float: 1bit(符号位) 8bits(指数位) 23bits(尾数位) double: 1bit(符号位) 11bits(指数位) 52bits(尾数位) float:2^23 = 8388608,一共七位 double:2^52 = 4503599627370496一共16位 所以呢.. #include <stdio.h> void main() { double f; scanf("%lf",&f); printf("%f or %e\n",f,f); return 0; }
如图,第一个数据应该是21.290000的啊。。。
70,014
社区成员
243,263
社区内容
加载中
试试用AI创作助手写篇文章吧