round 函数
要求四舍五入的情况,用round函数就很方便。
一、用法
1.基本用法
对于小数而言,round()函数仅仅保留到整数位,仅对小数点后一位进行四舍五入。
比如:round(1.5) = 2.000000,round(1.57) = 2.000000
2.保留小数用法
如果想要保留小数位数可以先乘后除以达到效果
举个栗子:
#include<bits/stdc++.h>
using namespace std;
int main()
{
double x = 1.5684;
//想要保留2位小数
printf("%.2lf\n",round(x*100)/100);//输出是1.57
return 0;
}
二、手写版本
double round(double x)
{
return (int)(x+0.5);
}
三、例题
[abc273_b](B - Broken Rounding (atcoder.jp))
题意:给你一个非负整数\(X\),求对\(X\)进行以下操作\(K\)次的结果
操作:对数字\(X\)按\(10^i\)进行四舍五入操作。
比如:\(273\)按照\(10^2\)四舍五入就是\(300\),\(273\)按\(10^1\)四舍五入就是\(270\)
思路:先变成小数,对其进行保留到整数位的四舍五入,在乘回来。
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{
ll x;
int k;
cin>>x>>k;
ll r = 1;
for(int i = 1;i<=k;i++)
{
r*=10;
x = round(x/(long double)r)*r;
}
cout<<x<<endl;
return 0;
}