Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL CEILING()·FLOOR()·ROUND() 함수 차이점 완벽 비교

MySQL에서 숫자를 처리할 때 자주 사용되는 CEILING(), FLOOR(), ROUND() 함수는 모두 수치를 조정하지만 각각 동작 방식이 다릅니다. 이 글에서는 세 함수의 개념과 실행 예제, 그리고 핵심 차이점을 하나씩 살펴보겠습니다.

CEILING() 함수 – 무조건 올림

CEILING() 함수는 X보다 작지 않은(크거나 같은) 정수 중 가장 작은 값을 반환합니다. 즉, 소수 값과 상관없이 항상 큰 쪽 정수로 올림합니다.

mysql> Select CEILING(3.46);
+---------------+
| CEILING(3.46) |
+---------------+
|             4 |
+---------------+
1 row in set (0.00 sec)

mysql> Select CEILING(-6.43);
+----------------+
| CEILING(-6.43) |
+----------------+
|             -6 |
+----------------+
1 row in set (0.02 sec)

위 예제에서 3.46은 4로 올림되고, 음수인 -6.43은 0에 더 가까운 -6으로 올림되는 것을 확인할 수 있습니다.

FLOOR() 함수 – 무조건 내림

FLOOR() 함수는 X보다 크지 않은(작거나 같은) 정수 중 가장 큰 값을 반환합니다. 즉, 항상 작은 쪽 정수로 내림합니다.

mysql> Select FLOOR(-6.43);
+--------------+
| FLOOR(-6.43) |
+--------------+
|           -7 |
+--------------+
1 row in set (0.00 sec)

mysql> Select FLOOR(3.46);
+-------------+
| FLOOR(3.46) |
+-------------+
|           3 |
+-------------+
1 row in set (0.00 sec)

-6.43은 -7로 내림되고, 3.46은 3으로 내림됩니다. CEILING()과 정반대로 동작한다는 점이 특징입니다.

ROUND() 함수 – 반올림

ROUND() 함수는 X를 가장 가까운 정수로 반올림하여 반환합니다. 두 번째 인수 D를 지정하면 소수점 D번째 자리까지 반올림하며, D가 양수가 아니면 소수점 이하 자릿수가 모두 제거됩니다.

mysql> SELECT ROUND(5.693893);
+---------------------------------------------------------+
|                    ROUND(5.693893)                      |
+---------------------------------------------------------+
|                            6                            |
+---------------------------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT ROUND(5.693893,2);
+---------------------------------------------------------+
|                   ROUND(5.693893,2)                     |
+---------------------------------------------------------+
|                          5.69                           |
+---------------------------------------------------------+
1 row in set (0.00 sec)

인수를 하나만 넣으면 정수로 반올림되고, 두 번째 인수로 2를 지정하면 소수점 둘째 자리까지 반올림된 결과(5.69)가 반환됩니다.

세 함수의 핵심 차이점

위의 정의와 예제를 통해 세 함수의 차이를 다음과 같이 정리할 수 있습니다.

  • ROUND(): 두 번째 인수 D와 숫자 자체(D번째 소수점 이하 자릿수가 5 이상인지 여부)에 따라 올림 또는 내림이 결정됩니다.
  • FLOOR(): 입력값과 관계없이 항상 내림(더 작은 정수)합니다.
  • CEILING(): 입력값과 관계없이 항상 올림(더 큰 정수)합니다.

동일한 값에 대한 결과 비교

mysql> Select ROUND(1.415,2),FLOOR(1.415),CEILING(1.415);
+----------------+--------------+----------------+
| ROUND(1.415,2) | FLOOR(1.415) | CEILING(1.415) |
+----------------+--------------+----------------+
|           1.42 |            1 |              2 |
+----------------+--------------+----------------+
1 row in set (0.00 sec)

같은 값 1.415에 대해 ROUND()는 1.42로 반올림하고, FLOOR()는 1로 내림하며, CEILING()은 2로 올림합니다. 이처럼 세 함수의 동작 방식을 정확히 이해하고 용도에 맞게 활용하면 데이터 조회 및 계산 시 원하는 결과를 얻을 수 있습니다.