内容目录
对浮点数按位四舍五入,就要换种方式。比如要对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更大就失效了。如果有更高精度的需求,想到再更。
你从远方来,我到远方去,遥远的路程经过这里,天空一无所有,为何给我安慰
Comments NOTHING