@divFloor — 바닥 나눗셈

@divFloor — 바닥 나눗셈

정수 나눗셈을 하다 보면 결과가 어느 쪽으로 내림되는지가 늘 중요해져요. @divFloor음의 무한대 방향으로 내림(바닥 floor)하는 나눗셈 빌트인입니다.

출처: Zig Documentation

본문

시그니처는 이렇게 생겼어요.

@divFloor(numerator: T, denominator: T) T

@divFloor는 바닥 나눗셈(floored division)을 수행합니다. 결과를 음의 무한대 쪽으로 내림해요. 부호 없는 정수(unsigned integers)라면 일반 나눗셈과 같은 결과를 줍니다.

다만 호출하는 쪽에서 몇 가지를 보장해야 해요. denominator != 0이어야 하고, 다음 조건은 성립하지 않아야 합니다.

!(@typeInfo(T) == .int and T.is_signed and numerator == std.math.minInt(T) and denominator == -1)

사용 예시를 보면 동작이 바로 와닿죠.

@divFloor(-5, 3) == -2
(@divFloor(a, b) * b) + @mod(a, b) == a

첫 번째처럼 음수를 나눌 때 일반 정수 나눗셈(-1)과 달리 -2가 나오는 것이 바닥 나눗셈의 특징입니다. 두 번째는 @divFloor@mod가 서로를 보완해 원래 값 a로 되돌아온다는 관계를 보여줘요.

만약 에러 코드를 돌려받을 수 있는 함수가 필요하다면, @import("std").math.divFloor를 쓰면 됩니다. 이 빌트인은 그러한 오류 처리를 하지 않아요.

더 알아보기 (Learn more)