关于c语言浮点数问题

#include<stdio.h>voidmain(){intm=7,n=4;floata=38.4,b=6.4,x;x=m/2+n*a/b+1/2;printf("%f... #include <stdio.h>
void main()
{int m=7,n=4;
float a=38.4,b=6.4,x;
x=m/2+n*a/b+1/2;
printf("%f\n",x);
}

输出结果是27.000000为什么不是27.0,27.00.....等?????跟程序没关我就想问浮点数精度的问题,要结合我问的回答啊,谢谢了!!期待通俗易懂的回答
我想问的是浮点数不就四个字节吗,哪来那么多地方放这么多0????
展开
 我来答
FrankHB1989
2009-09-08 · TA获得超过4.2万个赞
知道大有可为答主
回答量:4569
采纳率:100%
帮助的人:3041万
展开全部
标准C语言支持的浮点数符合IEEE格式,是二进制浮点数,并不是一个字节存放一个十进制小数位的。
关于IEEE浮点数,可以参考这里:http://breakman.bokee.com/4651854.html
至于这里的输出问题,如LS所说,是printf默认输出问题。如果使用%f和%lf格式控制符输出浮点数,默认输出保留6位十进制小数,自动四舍五入。用%.nf可以控制输出精度,n是表示保留小数位数的正整数。

参考资料: 原创+Google

可益岽讲塑服广691
2009-09-09
知道答主
回答量:35
采纳率:0%
帮助的人:21.1万
展开全部
把程序改成就行了
#include <stdio.h>
void main()
{int m=7,n=4;
float a=38.4,b=6.4,x;
x=m/2+n*a/b+1/2;
printf("%2.2f\n",x);
}
在C语言当中,在printf语句当中的%后面可以选择加上输出宽度选择

例如:%3.4,
整数部分代表输入的整数部分的有效位数,小数部分代表输入的小数部分的有效位数,如上输出就是设定输出整数的有效位数为3,小数的有效位数为4。

如果实际输出大于说设定的,则以实际输出的有效位数为主

如果没有对字符设定,那输出浮点数就会隐含有6位小数

除了有效位数的设定,还可以设定标志字符,有兴趣可以找C语言的教程看看
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
忘至白葬不情必0T
2009-09-08 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:90%
帮助的人:1.2亿
展开全部
%f默认是输出6位小数,你可以用%.1f,%.2f来控制小数点后位数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式