round 函数

发布时间 2023-07-09 13:04:50作者: nannan4128

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;
}