c语言的关于 : 对一个double型数据进行四舍五入运算

 我来答
鄂冰濯玉
2020-02-20 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:26%
帮助的人:921万
展开全部
对double数据类型进行四舍五入运算,可以利用double转为整型时强制取整来做到。
1
将double类型数据,强制转换为int类型,会强制截取整数部分。
比如double
a
=
1.23;
(int)a的值就是1。
2
由于是强制取整,所以即使是1.9转为int后,同样是1,这与四舍五入的要求不符。所以可以转换一下算法,做(int)(a+0.5)就可以实现四舍五入到整数的效果了。
3
要实现四舍五入到某一位,可以先乘一个值,将该位移动到个位,取整后,再除上这个值,将其移动回去。
比如将double
a
=
1.2345四舍五入保留2位小数,可以写作
(int)(a*100+0.5)/100.0。
蚁昂雄赏敬
2020-03-19 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:30%
帮助的人:855万
展开全部
推荐的方法:首先将该数存入double类型的变量中,然后将该变量乘以100(小数点后移2位),加上0.5,再强制取整,最后除以100.0(小数点前移2位)即得到了结果。
表达式如下(double变量为i):i
=
(int)(i*100+0.5)/100.0
使用printf输出时,如果要保留两位小数输出,请使用%.2f或%.2lf占位符
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
春志学陈卓
2020-02-06 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:28%
帮助的人:789万
展开全部
貌似我的VC6.0直接输出printf("%.2f",a);就自动四舍五入了
你的第一个a的值没有任何改变,你只是用了a去计算,但是并没有对a重新赋值。
第二个,你对a重新赋值了,经过你的式子之后,实际上是把小数点第三位的数加了五,
b=(a*100+0.5)/100;这一句拆开算就是(a*100)/100+0.5/100即a+0.005,所以才会不管你的原数是什么,程序执行后都会进位。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式