12.20.4 둥근 동작
이 섹션에서는 ROUND()
함수 및 엄격한 치형 ( DECIMAL
과 정수)을 가지는 컬럼에 삽입하여 정밀 계산의 둥근 대해 설명합니다.
ROUND()
함수는 인수가 정확한 값 또는 근사치인지에 따라 다른 방법으로 반올림합니다.
진정한 값의 수치의 경우
ROUND()
는 "반올림"규칙을 사용합니다. 0.5 이상 소수부를 가진다 값은 양수이면 다음 정수로 반올림, 부의 경우는 다음의 정수로 평가 절하합니다. (즉, 처음부터 먼쪽으로 반올림합니다.) 0.5 미만의 소수 부분을 가지는 값은 양의 경우는 다음의 정수로 평가 절하되고, 부의 경우는 다음 정수로 반올림됩니다.근사치 숫자의 경우, 결과는 C 라이브러리에 따라 다릅니다. 즉, 대부분의 시스템에서는
ROUND()
는 "짝수 반올림"규칙을 사용합니다. 어떤 소수부를 가진다 값도 가장 가까운 짝수로 반올림됩니다.
다음 예제에서는 정확한 값의 반올림과 근사값의 반올림 차이점을 보여줍니다.
mysql> SELECT ROUND(2.5), ROUND(25E-1);
+------------+--------------+
| ROUND(2.5) | ROUND(25E-1) |
+------------+--------------+
| 3 | 2 |
+------------+--------------+
DECIMAL
또는 정수 컬럼에 삽입에서는 대상이 엄격 값 데이터 형식이기 때문에 삽입되는 값이 정확한 값 또는 근사치의인지에 관계없이 둥근에서는 "반올림"가 사용됩니다.
mysql>CREATE TABLE t (d DECIMAL(10,0));
Query OK, 0 rows affected (0.00 sec) mysql>INSERT INTO t VALUES(2.5),(2.5E0);
Query OK, 2 rows affected, 2 warnings (0.00 sec) Records: 2 Duplicates: 0 Warnings: 2 mysql>SELECT d FROM t;
+------+ | d | +------+ | 3 | | 3 | +------+