永发信息网

c语言中两句相同的printf为什么输出结果不同

答案:5  悬赏:70  手机版
解决时间 2021-03-09 01:23
#include "stdAfx.h"

int main(int argc, char* argv[])
{

float a=123456.789e5, b;
b=a+20;
printf("a=%f b=%f\n",a,b);
printf("a=%f b=%f\n",a,b);
return 0;
}

为什么输出结果为 a=12345678848.000000,b=12345678868.000000
a=12345678848.000000,b=12345678848.000000
最佳答案
float类型数据只有前6位是精确的,从第七位开始都是由“四舍五入”获得的。
两个printf()函数的输出结果的差异发生在第十位,所以说,这两组数据都是“对”的。
下面把float改为double(当然输出格式也做了相应的修改),两组输出结果是相同的,原因在于,double类型数据的前16位是精确的。


#include <stdio.h>

int main(int argc, char* argv[]) {
double a = 123456.789e5, b;
b = a + 20;
printf("a = %lf b = %lf\n",a,b);
printf("a = %lf b = %lf\n",a,b);
return 0;
}
全部回答
你试着用float型的函数定义a,b,这样的话结果应该是正确的,或者把 printf("a=%f b=%f\n",a,b); printf("a=%f b=%f\n",a,b); 改为 printf("a=%f b=%lf\n",a,b); printf("a=%f b=%lf\n",a,b);
精度的问题 可以详细去了解下 float和double 小数点前及小数点后在内存的存放方式及 float是32位的 double 是64位的 上面的结果应该是超出了float的精度范围

int a=7,b=2,m=0,n=0,k;

k=(n=b>a)||(m=a);

printf("%d,%d\n",k,m);

double、float都是浮点型。double(双精度型)比float(单精度型)存的数据更准确些,占的空间也更大。double精度是float的两倍,所以需要更精确的计算常使用double。超出精度的部分就随机了。。。。。 单精度浮点数在机内占4个字节,用32位二进制描述。 双精度浮点数在机内占8个字节,用64位二进制描述。 浮点数在机内用指数型式表示,分解为:数符,尾数,指数符,指数四部分。 数符占1位二进制,表示数的正负。 指数符占1位二进制,表示指数的正负。 尾数表示浮点数有效数字,0.xxxxxxx,但不存开头的0和点 指数存指数的有效数字。 指数占多少位,尾数占多少位,由计算机系统决定。 可能是数符加尾数占24位,指数符加指数占8位 -- float. 数符加尾数占48位,指数符加指数占16位 -- double. 知道了这四部分的占位,按二进制估计大小范围,再换算为十进制,就是你想知道的数值范围。 对编程人员来说,double 和 float 的区别是double精度高,有效数字16位,float精度7位。但double消耗内存是float的两倍,double的运算速度比float慢得多,C语言中数学函数名称double 和 float不同,不要写错,能用单精度时不要用双精度(以省内存,加快运算速度)。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
盒的形近字,除了盆还有什么?
【春末夏初的唯美句子】求有‘’春末夏初‘’
去美国打工有担保人和邀请函,可以办工作签证
青苹果服装在哪里啊,我有事要去这个地方
右上肺野外带少许斑状模糊影是肺癌吗
【调查方法有哪些】实地调查的方法主要有以下
青海保信建设工程造价咨询有限公司在什么地方
【相思风雨中歌词】相思风雨中粤语发音谁来帮
我在上海西藏南路九院这边,怎么坐地铁到七浦
华为手机连上wifi却不能上网,别的手机可以上,
出国留学的原因英文
果章地址在哪,我要去那里办事
廊坊保洁?要专业的
鸡西统筹地区2010年职工平均工资是多少
有三个水桶,分别记为abc,切,三个水桶的总
推荐资讯
形容两者没有交集的成语
是横久必跌还是横多久涨就多久
索尼品牌的理念识别是什么
基层选调的职位代码是什么意思
已知27的平方等于a的6次方等于9的b次方,求2a
如何解决oppoR11拍照模糊的问题?
Java中的substring真的会引起内存泄露么
传统文化幼儿园班级取什么名称
滴滴快车如何用电子券
阅读下文,回答问题。春之怀古 张晓风春天必
迈腾噪音大怎么解决
用100N的力将质量为0.5kg的球以8m/s的初速度
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?