코드 6-9의 ROUND() 함수에서는 소수점 이하 자릿수를 의미하는 두 번째 매개변수가 음수입니다. 이때는 소수점 왼쪽인 정수 부분에서 반올림하며 해당 자릿수 이하는 0으로 바꾸고 소수 부분은 버립니다. 따라서 ROUND(1153.456, -1)은 일의 자리인 3에서 반올림해 십의 자리 5는 그대로, 일의 자리 3은 0이 되어 1150을 반환합니다. ROUND(1153.456, -2)는 십의 자리 5에서 반올림되어 백의 자리 1은 2, 십과 일의 자리는 0이 되어 1200이 반환됩니다.
ROUND() 함수에서 양수와 음수가 헷갈린다면 소수점을 그래프에서 0으로 보면 왼쪽(정수 부분)은 음수, 오른쪽(소수 부분)은 양수임을 생각해 보세요.
TRUNCATE() 함수는 ROUND()와 달리 반올림을 하지 않고 무조건 버립니다. TRUNCATE(2.4536, 2)는 소수점 이하 둘째 자리까지 반환하므로 셋째 자리에 상관없이 무조건 2.45를 반환하죠. TRUNCATE(1153.456, -2)는 두 번째 매개변수가 음수이므로 십의 자리까지 버리고 1100이 반환됩니다.
코드 6-10
SELECT RAND(), RAND(3), RAND(5);
실행결과
첫 번째 실행
두 번째 실행