C++에서 실수를 다룰 때 소수점 이하를 올림하거나 내림해야 하는 경우가 자주 발생합니다. 이때 사용하는 것이 바로 cmath 헤더 파일에 선언된 ceil 함수와 floor 함수입니다. 이 글에서는 두 함수의 개념, 문법, 그리고 실제 예제 코드까지 자세히 살펴보겠습니다.
ceil 함수란?
ceil 함수는 인자로 전달된 값보다 크거나 같은 정수 중에서 가장 작은 값, 즉 '올림' 결과를 반환합니다. 예를 들어 1234.25가 주어지면, 이보다 크거나 같은 가장 작은 정수인 1235를 반환합니다.
이 함수는 C++ 표준 라이브러리의 <cmath> 헤더 파일에 선언되어 있으며, 계산할 값을 하나만 인자로 받습니다. 이때 변수의 자료형은 반드시 double, float, long double 중 하나여야 합니다.
ceil 함수 문법
double ceil(double x); float ceil(float x);
ceil 함수 예제
다음은 C++에서 ceil 함수를 사용하는 예제입니다.
#include <iostream>
#include <cmath>
using namespace std;
int main() {
float var = 1234.25;
float res;
res = ceil(var);
cout << "Ceil value of " << var << " = " << res << endl;
return 0;
}
실행 결과
Ceil value of 1234.25 = 1235
실행 결과를 보면 1234.25의 천장(ceil) 값으로 1235가 출력된 것을 확인할 수 있습니다. 소수 부분이 아무리 작아도 무조건 위쪽 정수로 올림 처리됩니다.
floor 함수란?
floor 함수는 ceil 함수와 반대로, 인자로 전달된 값보다 작거나 같은 정수 중에서 가장 큰 값, 즉 '내림' 결과를 반환합니다. 예를 들어 211.876이 주어지면, 이보다 작거나 같은 가장 큰 정수인 211을 반환합니다.
floor 함수 역시 <cmath> 헤더 파일에 선언되어 있으며, 계산할 값을 하나만 인자로 받습니다. 변수의 자료형은 마찬가지로 double, float, long double 중 하나여야 합니다.
floor 함수 문법
double floor(double x); float floor(float x);
floor 함수 예제
다음은 C++에서 floor 함수를 사용하는 예제입니다.
#include <iostream>
#include <cmath>
using namespace std;
int main() {
float var = 211.876;
float res;
res = floor(var);
cout << "Floor value of " << var << " = " << res << endl;
return 0;
}
실행 결과
Floor value of 211.876 = 211
실행 결과를 보면 211.876의 바닥(floor) 값으로 211이 출력됩니다. 소수 부분과 관계없이 항상 아래쪽 정수로 내림 처리됩니다.
ceil과 floor 함수 비교 정리
| 구분 | ceil 함수 | floor 함수 |
|---|---|---|
| 동작 방식 | 올림 (크거나 같은 최소 정수) | 내림 (작거나 같은 최대 정수) |
| 헤더 파일 | <cmath> | |
| 지원 자료형 | double / float / long double | |
| 예: 1234.25 → | 1235 | 1234 |
| 예: -3.7 → | -3 | -4 |
특히 음수를 다룰 때 주의해야 합니다. ceil(-3.7)은 -3(0에 가까운 방향)이 되고, floor(-3.7)은 -4(0에서 먼 방향)가 됩니다. 단순히 소수점을 버린다고 생각하면 오류가 발생할 수 있으므로, 두 함수의 동작 원리를 정확히 이해하고 사용하는 것이 중요합니다.