이 글에서는 C++의 remainder() 함수가 어떻게 동작하는지, 그 문법과 다양한 예제를 자세히 살아보겠습니다.
remainder() 함수란?
remainder() 함수는 C++ STL에 내장된 함수로, <cmath> 헤더 파일에 정의되어 있습니다. 이 함수는 두 매개변수 사이의 나머지를 구하는 데 사용됩니다.
이 함수는 두 개의 인자를 받습니다. 첫 번째 인자는 분자(numerator), 두 번째 인자는 분모(denominator)이며, 나머지를 계산한 뒤 가장 가까운 값으로 반올림된 부동소수점 형태로 결과를 반환합니다.
이 함수는 내부적으로 다음과 같은 연산을 수행합니다.
remainder = numerator – roundquot * denominator;
여기서 'remainder'는 최종 결과값이며, numerator는 첫 번째 인자, denominator는 두 번째 인자입니다. roundquot은 numerator/denominator의 몫을 짝수 방향(가장 가까운 짝수)으로 반올림한 값입니다.
이 함수는 fmod 함수와 비슷하지만, fmod는 몫을 0 방향으로 절삭한다는 점에서 차이가 있습니다.
문법(Syntax)
double remainder(double numerator, double denominator);
매개변수(Parameters)
이 함수는 아래와 같은 매개변수를 받습니다.
numerator − 나눗셈의 분자 값입니다.
denominator − 나눗셈의 분모 값입니다.
반환값(Return Value)
이 함수는 numerator를 denominator로 나눈 나머지를 반환합니다. 만약 numerator가 0이라면 함수 역시 0을 반환하고, denominator가 0인 경우에는 0을 반환하거나 도메인 오류(domain error)를 발생시킵니다.
입력 예시
remainder(51, 5);
출력 결과
1
예제 1: 기본 사용법
#include <cmath>
#include <iostream>
using namespace std;
int main(){
int numerator = 51;
int denominator = 5, remainder_ans;
remainder_ans = remainder(numerator, denominator);
cout<<"Value of Remainder is " <<numerator << "/" << denominator << " is: " << remainder_ans << endl;
return 0;
}
실행 결과
위 코드를 실행하면 다음과 같은 출력이 생성됩니다.
Value of Remainder is 51/5 is: 1
예제 2: 분모가 0일 경우
// 분모(denominator)가 0일 때의 출력 결과는 다음과 같습니다.
#include <cmath>
#include <iostream>
using namespace std;
int main(){
int numerator = 51;
int denominator = 0, remainder_ans;
remainder_ans = remainder(numerator, denominator);
cout<<"Value of Remainder is " << numerator << "/" << denominator << " is: " <<
remainder_ans << endl;
return 0;
}
실행 결과
위 코드를 실행하면 다음과 같은 출력이 생성됩니다.
Value of Remainder is 51/0 is: -2147483648 //garbage value
분모가 0일 때는 유효한 나눗셈이 불가능하기 때문에 위와 같이 의미 없는 쓰레기 값(garbage value)이 출력되거나 도메인 오류가 발생할 수 있습니다. 따라서 실제 코드에서는 remainder() 함수를 호출하기 전에 분모가 0이 아닌지 반드시 확인하는 것이 좋습니다.