关于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???? 展开
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???? 展开
3个回答
展开全部
标准C语言支持的浮点数符合IEEE格式,是二进制浮点数,并不是一个字节存放一个十进制小数位的。
关于IEEE浮点数,可以参考这里:http://breakman.bokee.com/4651854.html。
至于这里的输出问题,如LS所说,是printf默认输出问题。如果使用%f和%lf格式控制符输出浮点数,默认输出保留6位十进制小数,自动四舍五入。用%.nf可以控制输出精度,n是表示保留小数位数的正整数。
关于IEEE浮点数,可以参考这里:http://breakman.bokee.com/4651854.html。
至于这里的输出问题,如LS所说,是printf默认输出问题。如果使用%f和%lf格式控制符输出浮点数,默认输出保留6位十进制小数,自动四舍五入。用%.nf可以控制输出精度,n是表示保留小数位数的正整数。
参考资料: 原创+Google
展开全部
把程序改成就行了
#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语言的教程看看
#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语言的教程看看
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
%f默认是输出6位小数,你可以用%.1f,%.2f来控制小数点后位数
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询