C语言中%f表示的是什么,为什么有时小数点后保留6位,有时小数点后保留1位

 我来答
大宝妈谈教育
高粉答主

2020-04-04 · 关注我不会让你失望
知道小有建树答主
回答量:3306
采纳率:100%
帮助的人:54.4万
展开全部

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。

kaixingui2012
推荐于2017-10-02 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:6429万
展开全部
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位
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友3e23b61
2018-05-20
知道答主
回答量:4
采纳率:0%
帮助的人:3246
展开全部

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

四舍六入无成双网页链接

数值修约网页链接

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式