一道令我困惑的C问题

main(){floaty=-789.124;printf("%10.2e\n",y);}为什么输出的是:-7.9e+02而不是-7.89e+02即应该有两位小数啊?答案... main()
{float y=-789.124;
printf("%10.2e\n",y);
}
为什么输出的是: -7.9e+02
而不是 -7.89e+02即应该有两位小数啊?
答案书和上机后都是一位小数,有点搞不明白
恩,我用的是tc2.0
展开
 我来答
wuqianhu12
2009-08-14 · TA获得超过635个赞
知道答主
回答量:92
采纳率:0%
帮助的人:139万
展开全部
这个和计算机的浮点数的存储形式有关系,输出的结果是对的,因为计算机里的存储形式都是用的二进制形式,而有些浮点数是不能用二进制精确表示的,就比如你的789.124,这时候计算机就采取的一种取近似值的方法,默认为了790,这误差已经相当小了,但具体采用哪一种方法就因计算机本身而定了,如果能够用二进制精确表示就不会出现这种问题了~~
ren294043248
2009-08-14 · TA获得超过931个赞
知道答主
回答量:204
采纳率:0%
帮助的人:0
展开全部
浮点数(floating point number)
占用4byte
范围:3.4e + / - 38 (7 个数字(7digits)

4byte,它占用4个字节,所以要先前进一位
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2009-08-14
展开全部

参考资料: http://zhidao.baidu.com/question/46475812.html

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
忘至白葬不情必0T
2009-08-14 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:90%
帮助的人:1.2亿
展开全部
在我机子上是-7.89e+002,恐怕是C语言标准中忽漏了对%e的控制定义吧.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
helloain
2009-08-14 · 超过39用户采纳过TA的回答
知道小有建树答主
回答量:75
采纳率:0%
帮助的人:119万
展开全部
用的TC吧?试试printf("%10.3e\n", y);
在TC下这个.3是总位数的意思,不是有几位小数,10是整个字符串的宽度
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友4c480a0
2009-08-14 · TA获得超过251个赞
知道小有建树答主
回答量:248
采纳率:0%
帮助的人:191万
展开全部
将float 改为double试试。我调了一下你程序,在vc6上不能运行。将float改为double就和你说的一样了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式