C语言 C编译系统将浮点型常量作为双精度来处理

能用该数字具体的表示一下吗?最好连位数都有。。。... 能用该数字具体的表示一下吗?最好连位数都有。。。 展开
 我来答
匿名用户
2014-05-19
展开全部

 

这样?

追问
我想知道它是如何将2.45678和4523.65作为双精度数的?
追答
单精度与双精度的区别是有效数字,
单精度 占四个字节存储空间 能表示的有效数位为7位
双精度 占八个字节存储空间 能表示的有效数位为16位
作为双精度就是增加有效数字位数 来提高计算精确度
匿名用户
2014-05-19
展开全部
2.45678*4523.65 正确结果是:11113.612847
double f1 = 2.45678*4523.65;
float f2 = 2.45678*4523.65;
则结果
f1 = 11113.612847
f2 = 11113.613281
很明显f2有失真
这是因为float的精度只有7位(不包括指数部分),超过7位就失真了
追问
我想知道它是如何将2.45678和4523.65作为双精度数的?
追答
双精度数占有8个字节,而单精度数只有4个字节
这个体现在具体的运算当中,分别按双/单精度浮点数的标准解析、存储和运算
如果非要看看结果,可以这样:
printf("%d, %d\n", sizeof(2.45678), sizeof(2.45678f));
你会发现同样是2.45678,前者输出8,后者输出4

还有疑问吗,我已经哈欠连天了
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式