c语言 第14题 应该怎么分析呀

 我来答
应骏化宇达
2019-09-04 · TA获得超过3753个赞
知道大有可为答主
回答量:3141
采纳率:27%
帮助的人:434万
展开全部
A和D这两个就不用多说了,算法都不对。剩下B和C,两者就差在C项前有个(int)强制类型转换。将float类型强制转为int型,会舍去全部的小数位,而B项没有强制类型转换,即使是100这个常数,也是隐式从int转成float,不会丢失精度。
而题目要求四舍五入,这个要求B项做不到,而C项有舍的功能,所以从这个角度去想,选C。当然这只是快速解法,没有说明问题的本质。
从另一个角度入手,假设x=0.014,则x*100+0.5
=
1.9,(int)(x*100+0.5)
=
1,可见小数第三位小于5的话,即使让它加上5是不会产生进位的,那个转成int之后跟没有加0.5是一样的结果。
再假设x=0.015,则x*100+0.5
=
2.0,(int)(x*100+0.5)
=
2,可见小数第三位大于等于5时,加上5会产生进位。转成int之后整数部分比没加0.5之前大1。后面的我就不细说了,自己理解
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式