MySQL ROUND 함수 주의점

정지효·2023년 12월 20일

서론

여느때와 다름 없이 일을 하는데, 엑셀에서 계산한 값과 mysql 쿼리로 계산한 값이 다른 경우가 발생했다.

분석을 해보니, 소수점 자리수가 5로 끝나는 경우에 값이 달라지는걸 확인했다.

ChatGPT 답변

Bankers' Rounding

MySQL 의 Round() 함수는 엑셀이나 코드로 사용되는 Round() 함수와 평소에는 별반 다르지 않다.
하지만 소수점이 정확히 정수와 정수의 절반일 때, 차이점이 발생한다.

MySQL 은 가장 근처의 짝수(even)로 반올림하고, 엑셀이나 일반적인 코드에서는 무조건 반올림한다.

즉, 16.5를 반올림하는 경우에
MySQL 은 16 과 17 중에 짝수인 16을 반환하고
기타 다른 함수는 무조건 17을 반환하여 차이가 발생하는 것이다..!!!

라운딩 기법의 이름에서 알 수 있듯이 은행가에서 쓴다고 하는데.. 아마 대량의 데이터에 대해 각각을 반올림(내림) 하고 그것의 합산을 구할 때, 오차율을 최소화하려고 쓰는 것 같긴하다.. (개빡친다)

profile
백엔드 개발자

0개의 댓글