#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
c语言中两句相同的printf为什么输出结果不同
答案:5 悬赏:70 手机版
解决时间 2021-03-09 01:23
- 提问者网友:像風在裏
- 2021-03-08 07:16
最佳答案
- 五星知识达人网友:煞尾
- 2021-03-08 08:53
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;
}
两个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;
}
全部回答
- 1楼网友:雪起风沙痕
- 2021-03-08 10:56
你试着用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);
- 2楼网友:何以畏孤独
- 2021-03-08 10:47
精度的问题
可以详细去了解下 float和double 小数点前及小数点后在内存的存放方式及
float是32位的 double 是64位的
上面的结果应该是超出了float的精度范围
- 3楼网友:大漠
- 2021-03-08 10:22
int a=7,b=2,m=0,n=0,k;
k=(n=b>a)||(m=a);
printf("%d,%d\n",k,m);
- 4楼网友:骨子里都是戏
- 2021-03-08 09:02
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不同,不要写错,能用单精度时不要用双精度(以省内存,加快运算速度)。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯