이 글에서는 C++ STL에서 제공하는 nearbyint() 함수의 동작 원리, 문법, 그리고 실제 활용 예제를 자세히 살펴보겠습니다.
nearbyint() 함수란?
nearbyint() 함수는 C++ STL에 내장된 함수로, <cmath> 헤더 파일에 정의되어 있습니다. 이 함수는 입력받은 값을 현재 설정된 반올림 규칙에 따라 가장 가까운 정수 값으로 변환하여 반환합니다.
함수는 입력값을 가장 가까운 정수 값으로 반올림하며, 이때 적용되는 반올림 방식은 fegetround() 함수가 반환하는 현재 반올림 모드(rounding mode)에 따라 결정됩니다.
이 함수는 float, double, long double 타입의 값을 인자로 받을 수 있으며, 각 타입에 맞게 오버로딩되어 있습니다.
문법(Syntax)
double nearbyint(double num); float nearbyint(float num); long double nearbyint(long double num);
매개변수(Parameters)
이 함수는 다음 매개변수를 받습니다.
- num − 반올림하고자 하는 값입니다.
반환값(Return Value)
이 함수는 전달받은 num을 반올림한 정수 값을 반환합니다.
간단한 예제
입력
nearbyint(2.13);
출력
2
입력
nearbyint(3.4);
출력
3
예제 코드 1
#include <bits/stdc++.h>
using namespace std;
int main(){
float var = 3.4;
cout<<"value of var is: " <<var<< endl;
cout<<"value after round off is: "<<nearbyint(var);
return 0;
}출력
value of var is: 3.4 value after round off is: 3
위 예제에서 변수 var의 값은 3.4이며, nearbyint() 함수를 적용하면 가장 가까운 정수인 3이 반환됩니다.
예제 코드 2
#include <bits/stdc++.h>
using namespace std;
int main(){
float var = 7.9;
cout<<"value of var is: " <<var<< endl;
cout<<"value after round off is: "<<nearbyint(var);
return 0;
}출력
value of var is: 7.9 value after round off is: 8
이번에는 소수 첫째 자리가 9인 7.9를 입력했기 때문에 올려서 8이 반환된 것을 확인할 수 있습니다.
참고: rint() 함수와의 차이점
C++에는 nearbyint()와 유사한 rint() 함수도 존재합니다. 두 함수의 주요 차이점은 rint()는 반올림 결과가 정확하지 않을 경우 FE_INEXACT 부동소수점 예외를 발생시킬 수 있는 반면, nearbyint()는 어떠한 예외도 발생시키지 않는다는 점입니다. 따라서 예외 처리 없이 조용히 반올림 작업을 수행해야 할 때는 nearbyint()를 사용하는 것이 좋습니다.