C++浮点数的四舍五入实现

发布于 2021-12-27  28 次阅读


内容纲要
本文最后更新于2021年12月27日,已超过 12 个月没更新!内容可能已失效,请自行测试,失效请评论区反馈,谢谢啦~

对浮点数按位四舍五入,就要换种方式。比如要对1.12345保留4位小数,先乘以10000(10^4,几位小数就是几次方),然后加0.5,得11235,再除以10000,得到1.1235。代码如下:

//按位四舍五入
#include <iostream>
#include<iomanip>

using namespace std;

double round_fudian(double number,int bits) //number->浮点数,bits->保留位数
{
    for(int i=0;i<bits;++i)
    {
        number*=10;
    }
    number=(long long)(number+0.5);
    for(int i=0;i<bits;++i)
    {
        number/=10;
    }
    return number;
}

int main()
{
    double x;
    int n;
    cin>>x>>n;
    cout << fixed << setprecision(n) << round_fudian(x,n) <<endl;
}

但这样做也有个bug,就是double的精度只在小数点后15-16位之间(正数15位,负数16位),所以最多也只能精确到这样子,n更大就失效了。如果有更高精度的需求,想到再更。
你从远方来,我到远方去,遥远的路程经过这里,天空一无所有,为何给我安慰

参考 https://www.cnblogs.com/kiritozhj/p/10019292.html


夕阳荒草本无恨,才子佳人空自悲。