C++中setprecision小数取舍的探究

在C++中,对于浮点数x的小数位数保留n位输出,我们经常用到cout<<setprecision(n)<<fixed<<x;
那么其中的取舍原理,不知道大家有没有注意过,来看下面这个例子:

int main(){
    double a;
    cin>>a;
    cout<<round(a)<<endl;
    cout<<setprecision(0)<<fixed<<a;
    return 0;
}

当输入0.5时,输出结果是1和0。没错!setprecision并不是四舍五入(round是四舍五入),它遵循的规则是“四舍六入五留双”。
所谓四舍六入五留双,是指如果恰好是0.5的情况,会把他近似到使得前一位是偶数。
比如近似到整数,0.4为0,0.5为0,0.50001为1,0.6为1,1.5为2,2.5为2。
上述就是setprecision在小数取舍时的特性,请注意!

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容