C语言中%f表示的是什么,为什么有时小数点后保留6位,有时小数点后保留1位
printf("%f",fVal);//这是浮点默认输出格式,小数点保留6位
printf("%.1f",fVal);//.1是说明,小数点保留1位,对其后的数据进行四舍五入
printf("%.2f",fVal);//.2是说明,小数点保留2位,对其后的数据进行四舍五入,你想保留几位,就用点几
printf("%10f",fVal);//输出宽度为10个字符,右对齐,前补空格,小数点保留6位
printf("%10.2f",fVal);//输出宽度为10个字符,右对齐,前补空格,小数点保留2位
在格式化输出中,%f和%e默认都是都是六位,不过%e输出的话幂级数也占三位。
%10.3f
整个输出占10格(含.±号)小数占3格
默认
%f效果等于0.123456
%e效果等于0.12345e+01
float类型的精度,只能保证前6位是绝对精确的,而第7位可能是准确的,也可能是近似的。在设计时,打印浮点数是默认的六位数字。超过6位输出不精确的值,意义不大。如果第七个数字不准确,第八个数字就完全没有意义。小于6,有效数字更小。
扩展资料:
如果存储比精度更重要,可以考虑对浮点变量使用浮点类型。相反,如果精度是最重要的条件,则使用double。
浮点变量可以提升为更大的基数类型(从float到double)。当您对浮点变量执行运算时,通常会发生提升。该算法的执行精度始终与精度最高的变量相同。例如,考虑以下类型声明:
floatf_short;doublef_long;longdoublef_longer;f_short=f_short*f_long;
在前面的例子中,变量f_short被提升为double类型并乘以f_long;然后,结果循环为float类型,然后循环为f_short。
printf("%.1f", fVal ); //.1是说明,小数点保留1位,对其后的数据进行四舍五入
printf("%.2f", fVal ); //.2是说明,小数点保留2位,对其后的数据进行四舍五入,你想保留几位,就用点几
printf("%10f", fVal ); //输出宽度为10个字符,右对齐,前补空格,小数点保留6位
printf("%10.2f", fVal ); //输出宽度为10个字符,右对齐,前补空格,小数点保留2位