바닥·천장 함수 계산기 쉽게 이해하기 — 개념과 원리
이 계산기는 실수의 바닥 함수 ⌊x⌋(내림), 천장 함수 ⌈x⌉(올림), 버림, 소수 부분을 구하고, d로 나눈 뒤의 값과 그 나머지도 계산합니다. 이산수학, 프로그래밍의 정수 나눗셈과 반올림, 상자가 몇 개 필요한지 같은 일상적인 올림·내림 문제에 쓸 수 있습니다.
계산 방법
바닥 ⌊x⌋ = x 이하의 가장 큰 정수, 천장 ⌈x⌉ = x 이상의 가장 작은 정수
버림 = 소수 부분을 떼어 냄(0 쪽으로 반올림)
소수 부분 = x − ⌊x⌋, 항상 0 이상 1 미만
나누는 수 d가 있으면 x/d로 계산하며, 나머지 = x − d·⌊x/d⌋(부호는 d와 같음)
- 이진 반올림 오차를 피하려고 정수와 10⁻⁹ 이내인 몫은 그 정수로 봅니다.
원리
수직선에서 바닥 함수는 x이거나 x 바로 왼쪽의 정수로, 천장 함수는 x이거나 바로 오른쪽의 정수로 갑니다. 양수에서는 버림이 바닥과 같지만, 음수에서는 소수를 떼면 0 쪽으로 가므로 버림이 천장과 같습니다. 이 차이는 프로그래밍에서 중요합니다. 정수 나눗셈을 버림으로 하는 언어와 바닥으로 하는 언어가 있어 음수에서 결과가 다릅니다.
예제 풀이
기본값: x = −3.7, d = 1.
- x/d = −3.7입니다.
- 바닥 ⌊−3.7⌋ = −4(왼쪽의 다음 정수)입니다.
- 천장 ⌈−3.7⌉ = −3, 버림 = −3(0 쪽)입니다.
- 소수 부분 = −3.7 − (−4) = 0.3, 나머지 = −3.7 − 1 × (−4) = 0.3입니다.
- 정수가 아니므로 천장 = 바닥 + 1입니다.
| 나누는 수 d (x 자체는 1) | 내림(바닥) ⌊x/d⌋ |
|---|---|
| 0.25 | -15 |
| 0.5 | -8 |
| 0.75 | -5 |
| 1 | -4 |
| 1.25 | -3 |
| 1.5 | -3 |
| 2 | -2 |
결과 해석
나눠 담는 문제에는 천장을 씁니다. 23명이 5인승 차에 타려면 ⌈23/5⌉ = 5대가 필요합니다. '꽉 찬 묶음이 몇 개인가'에는 바닥을 씁니다. ⌊23/5⌋ = 4입니다. 이 정의에서 소수 부분은 절대 음수가 아니어서, 음수를 다룰 때 놀라는 경우가 많습니다. 나누는 수 d를 넣으면 시간을 시와 분으로 나누거나, 날짜를 주와 요일로 나누는 계산에도 바로 쓸 수 있습니다. 예를 들어 135분은 ⌊135/60⌋ = 2시간과 나머지 15분입니다.
흔한 실수
- ⌊−3.7⌋ = −3이라고 생각하는 경우
- 음수에서 바닥을 써야 할 곳에 버림을 쓰는 경우
- −3.7의 소수 부분을 0.7이나 −0.7로 기대하는 경우
- 바닥이나 천장 대신 반올림을 하는 경우
자주 묻는 질문
−3.7의 바닥 함수 값은?
−3.7보다 크지 않은 가장 큰 정수인 −4입니다.
바닥과 버림의 차이는?
양수에서는 같고, 음수에서는 버림이 0 쪽으로, 바닥이 아래쪽으로 갑니다.
천장 함수는 언제 쓰나요?
상자, 버스, 쪽수처럼 양을 모두 담을 만큼의 정수 개수가 필요할 때 씁니다.
정수를 넣으면 어떻게 되나요?
바닥, 천장, 버림이 모두 그 정수와 같고 소수 부분은 0입니다.
출처: R. L. Graham, D. E. Knuth & O. Patashnik, Concrete Mathematics, 2nd ed. (1994), Ch. 3 Integer Functions