IT관련/MariaDB

[MySQL] DOUBLE vs DECIMAL 차이점 완벽 정리 (어떤 타입을 써야 할까?)

파란하늘999 2026. 1. 21. 14:47

데이터베이스 설계 시 소수점이 포함된 숫자를 저장할 때 DOUBLE과 DECIMAL 중 무엇을 쓸지 고민될 때가 많습니다. 두 타입의 핵심 차이점과 용도별 선택 기준을 정리했습니다.


1. 한 눈에 보는 비교표

구분 DOUBLE DECIMAL
타입 부동 소수점 (Floating-Point) 고정 소수점 (Fixed-Point)
정확도 근사치 (오차 발생 가능) 정확한 수치 (오차 없음)
계산 속도 빠름 (CPU 연산) 상대적으로 느림
저장 용량 8바이트 고정 선언된 정밀도에 따라 가변적
적합한 용도 과학 기술 계산, GPS, 센서 데이터 돈, 금융, 회계, 수수료 계산

2. 왜 차이가 발생하나요?

💡 DOUBLE: "최대한 비슷한 값을 저장하자"

컴퓨터는 2진수를 사용합니다. 0.1과 같은 숫자를 2진수로 변환하면 무한 소수가 되는데, DOUBLE은 이를 적당한 지점에서 반올림하여 근사치로 저장합니다.

  • 장점: 연산 속도가 매우 빠르고 아주 큰 숫자나 아주 작은 숫자를 효율적으로 다룹니다.
  • 단점: 숫자를 더하고 빼는 과정에서 미세한 오차가 누적될 수 있습니다. (예: 0.1을 10번 더했는데 0.99999...가 되는 현상)

💡 DECIMAL: "글자 그대로 정확하게 저장하자"

DECIMAL은 내부적으로 숫자를 문자열과 유사하게 관리하여, 우리가 입력한 숫자를 소수점 위치까지 그대로 저장합니다.

  • 장점: 연산 시 오차가 전혀 없습니다. 정확도가 생명인 금융 데이터에 필수입니다.
  • 단점: 계산 속도가 부동 소수점에 비해 느리고 저장 공간을 더 많이 차지할 수 있습니다.

3. 실무 선택 가이드

✅ DECIMAL을 써야 하는 경우 (Accuracy is King)

  • 돈과 관련된 모든 데이터 (가격, 잔액, 환율, 수수료율)
  • 정확한 비율 계산이 필요한 경우 (할인율 15.5% 등)
  • 소수점 이하 자릿수가 고정되어야 하는 경우

✅ DOUBLE을 써야 하는 경우 (Performance is King)

  • 측정값 (온도, 습도, 무게, 높이 등)
  • 좌표 데이터 (위도, 경도)
  • 오차가 결과에 큰 영향을 주지 않는 대규모 통계 데이터

4. 사용 예시 (SQL)

-- 돈 관련 (전체 19자리, 소수점 4자리)
CREATE TABLE payments (
    id INT PRIMARY KEY,
    amount DECIMAL(19, 4) NOT NULL 
);

-- 센서 데이터 관련
CREATE TABLE sensor_logs (
    id INT PRIMARY KEY,
    temperature DOUBLE NOT NULL
);

💡 요약 한 줄 평

"돈 계산은 무조건 DECIMAL, 그 외 성능이 중요한 수치 데이터는 DOUBLE을 선택하세요!"

반응형