解决四舍五入的一种很巧妙的方法

此前,我一般用某数据减去他的整数部分的结果与0.5,进行比较,来判断舍或是入。代码如下:



//输出浮点数a四舍五入之后的结果

int main()
{
    float a;
    cin>>a;
    if(a-(int)a)<0.5;
        cout<<(int)a;
    else 
        cout<<(int)a+1;
    return 0;
}

这样少许麻烦,会用到一个if条件句。更为简便的方法是,直接在原浮点数的基础上加上0.5,再取其小数部分。因为若是整数部分小于0.5,加上0.5之后小数部分小于1,这时其整数部分刚好就是舍了之后的结果;若是整数部分大于0.5,加上0.5后整数部分就是入了之后的结果。代码如下:

//请输出浮点数a四舍五入之后的值
int main()
{
    float a;
    int b=a+0.5;
    cout<< b;
    return 0;
}

此外,练题的时候遇到一种四舍五入求百分数的题

//及格人数为a,总人数为n,求及格率,并四舍五入以百分数的形式输出,百分号前的数为整数
int main()
{
    float b=(a*1.0)/(n*1.0);//b为及格率的小数形式.分子分母有一项*1.0就可
    int per;
    per=(int)((b+0.005)*100);//b+0.005相当于四舍五入前百分号形式的及格率中,百分号前面的数加了0.5,在对其取整数部分
    //这里也可以不写(int),因为per本身就是int类型
    //也可以向上面所说的那样,写作per=b*100+0.5;
    cout<<per<<"%";
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值