C++에서 std::fmodf, std::reminderf 두 함수는 부동소수점 나눗셈의 나머지를 계산하는 함수이다. 하지만 계산 방식과 결과가 다르다.
fmod(float x, float y)
다음과 같은 수학적 정의를 따른다.
여기서trunc는 0 방향으로 내림연산을 한다.
reminderf(float x, float y)
다음과 같은 수학적 정의를 따른다.
여기서round는 가장 가까운 정수로 반올림 연산을 한다.
| 항목 | fmodf(x, y) | remainderf(x, y) |
|---|---|---|
| 몫 계산 | trunc(x / y) (0 쪽으로 버림) | round(x / y) (가장 가까운 정수로 반올림) |
| 결과 범위 | [0, y) 또는 ( -y, 0] | [ -y / 2, y / 2] |
| 나머지 방향 | 항상 x와 같은 부호 | 절댓값이 작은 쪽(양수 / 음수 모두 가능) |
| 용도 | 수학적인 나눗셈, 주기 계산 등 | 오차 최소화 |