기록공간

round 반올림 메서드 (C++ 11) 본문

C++

round 반올림 메서드 (C++ 11)

입코딩 2020. 6. 25. 22:23
반응형

round 메서드는 <math.h> 라이브러리 내에 정의되어 있다.

double round(double num);
float round(float num);
long double round(long double num);

// template
double round(T x);

round는 인자로 들어온 값을 반올림해서 반환하는 메서드이다. 맨 밑의 경우처럼 템플릿 함수로 구현되어 있어 꼭 위 함수들의 변수형을 맞추지 않아도 된다. 

 

round 함수를 사용한 결과 값은 다음과 같다.

round(3.2) ==> 3
round(3.7) ==> 4

round(-3.2) ==> -3
round(-3.7) ==> -4

위 예제를 코드로 표현하면 다음과 같다.

#include <iostream>
#include <math.h>
using namespace std;

int main()
{
	double a1 = 3.2;
	double a2 = 3.7;
	double a3 = -3.2;
	double a4 = -3.7;

	cout << "round(3.2) ==> " << round(a1) << endl;
	cout << "round(3.7) ==> " << round(a2) << endl;
	cout << "round(-3.2) ==> " << round(a3) << endl;
	cout << "round(-3.7) ==> " << round(a4) << endl;

	return 0;
}

 

round를 이용한 특정 소수점자리 반올림

round를 응용하면 특정 소수점자리도 반올림 시킬 수 있다. 예를 들면 다음과 같다.

#include <iostream>
#include <math.h>
using namespace std;

double round_digit(double num, int d)
{
	double t = pow(10, d - 1);
	return round(num * t) / t;
}

int main()
{
	double a1 = 3.234647;

	cout << "1번째 소수점 반올림 ==> " << round_digit(a1, 1) << endl;
	cout << "2번째 소수점 반올림 ==> " << round_digit(a1, 2) << endl;
	cout << "3번째 소수점 반올림 ==> " << round_digit(a1, 3) << endl;
	cout << "4번째 소수점 반올림 ==> " << round_digit(a1, 4) << endl;
	cout << "5번째 소수점 반올림 ==> " << round_digit(a1, 5) << endl;
	cout << "6번째 소수점 반올림 ==> " << round_digit(a1, 6) << endl;

	return 0;
}

반올림할 자릿수가 소수점 첫번째 자릿수가 될때까지 10^n 만큼 곱해준 후 round 메서드로 반올림을 한 후 다시 10^n만큼 나눠주면 원하는 소수점 자릿수를 반올림 시킬 수 있다.

(5번째 소수점 자릿수를 반올림)
3.234647 => 3.234647 * 10^(5 - 1) => round(32346.47) => 32346 / 10^(5 - 1) => 3.2346

반응형

'C++' 카테고리의 다른 글

객체 지향 프로그래밍( OOP ) 개념  (0) 2020.06.29
std::getline()을 이용한 string 표준입력  (0) 2020.06.25
예외 처리  (0) 2020.04.21
스마트 포인터 - 간략하게  (0) 2020.04.07
decltype 키워드  (0) 2020.04.03
Comments