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。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-10-02
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位本回答被提问者和网友采纳
第2个回答  2018-05-20

printf("%.mf",fVal)的舍入这里,有个巨大的误区,不是四舍五入,它采用的是四舍六入五成双规则,详情各位可参考百科。

四舍六入无成双网页链接

数值修约网页链接

相似回答