[C++] fmodf, reminderf

김진우·2025년 7월 1일

C++

목록 보기
16/16
post-thumbnail

C++에서 std::fmodf, std::reminderf 두 함수는 부동소수점 나눗셈의 나머지를 계산하는 함수이다. 하지만 계산 방식과 결과가 다르다.

fmodf

fmod(float x, float y)

  • x를 y로 나눈 몫의 정수 부분을 버리고 남는 나머지를 계산한다.

다음과 같은 수학적 정의를 따른다.

 fmodf (x,y)=x trunc (x/y)y\text{ fmodf }(x, y) = x - \text{ trunc }(x / y) \cdot y

여기서trunc0 방향으로 내림연산을 한다.

reminderf

reminderf(float x, float y)

  • x를 y로 나눈 값 중 가장 가까운 정수를 몫으로 사용하여 나머지를 계산한다.

다음과 같은 수학적 정의를 따른다.

 remainderf (x,y)=x round (x/y)y\text{ remainderf }(x, y) = x - \text{ round }(x / y) \cdot y

여기서round가장 가까운 정수로 반올림 연산을 한다.

차이점 요약

항목fmodf(x, y)remainderf(x, y)
몫 계산trunc(x / y) (0 쪽으로 버림)round(x / y) (가장 가까운 정수로 반올림)
결과 범위[0, y) 또는 ( -y, 0][ -y / 2, y / 2]
나머지 방향항상 x와 같은 부호절댓값이 작은 쪽(양수 / 음수 모두 가능)
용도수학적인 나눗셈, 주기 계산 등오차 최소화

0개의 댓글