C++四舍五入问题

C++进行除法运算时,如果运算结果是整数保存时,一般情况下是省略小数位。比如3.8÷2 = 1.9,这个1.9的结果用整型变量输出只会输出1。

这一点是计算机思维和常规运算思维的不同。

有一些函数对运算结果进行相应的处理

floor : 不大于自变量的最大整数             
ceil   :不小于自变量的最大整数                
round:四舍五入到最邻近的整数 

这里看很多人说不能直接用round这个函数,所以写了具体模板代码,比如这样

double round(double r)
{
    return (r > 0.0) ? floor(r + 0.5) : ceil(r - 0.5);
}

在目前的测试中round是可以用的,VS里也有这个内置函数。
备注:1、这部分处理需要加math头文件

           2、四舍五入进位到整数部分

重点时备注2,也就是说这三个函数的结果都是整数,小数位都会进位。比如4.085÷2 = 2.0425,通过round之后,结果是2.000000。如果需要精确到某一个小数位的四舍五入,直接用会有问题,可以通过放缩处理,先扩大成整数再缩小为小数。当然,自己学艺不精,应该有自己没了解的更好的办法

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值