main()
{
float c=123.456789;
printf("c=%f,c=%e,c=%g\n",c,c,c);
}
在vc++6.0中运行结果如下:
c=123.456787,c=1.234568e+002,c=123.457
我想请教一下各位前辈
1、第一个结果中,最后一位“7”是计算机乱输出的;还是最后两位“87”都是乱输出的,而碰巧8与原数相同?
2、第二个结果中,是不是以指数形式输入(%e),就意味着输入结果中,e前面的数字按单精度格式输出?我看1.234568中的“8”好像是四舍五入的结果,而不是计算机乱输出的?
3、第三个结果中,%g输出的结果为什么只有6位数?单精度的不应该是7位吗?
谢谢各位了!
printf("c=%f,c=%e,c=%g\n",c,c,c);的结果
答案:2 悬赏:80
解决时间 2021-03-01 20:56
- 提问者网友:纹身骑士
- 2021-03-01 13:47
最佳答案
- 二级知识专家网友:陪衬角色
- 2021-03-01 14:27
1. 最后一位是存储精度不够的结果。
2. 前面部分似乎是小数点后4位有效数字, 那就跟f是一样的
3. %g用的很少, 似乎是6位有效数字
2. 前面部分似乎是小数点后4位有效数字, 那就跟f是一样的
3. %g用的很少, 似乎是6位有效数字
全部回答
- 1楼网友:woshuo
- 2021-03-01 15:36
也不了解,float默认6位有效数字,可能第一结果中后面的787都是乱来的。。,%g输出的结果6位数,可能跟float型默认6位有效数字有关。。。纯属虚构。。。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯
• 手机登qq时,显示手机磁盘不足,清理后重新登 |
• 刺客的套装怎么选啊? |