[데이터베이스] product.price의 타입을 DECIMAL(10,2) 로 설정한 이유 - TomAndJerry9698/GIANT-MALL-BE GitHub Wiki
DECIMAL
을 사용해야 하는 이유
가격에 1. 금액 계산의 정확성 보장
FLOAT
,DOUBLE
은 이진 부동소수점 방식으로 저장되기 때문에 계산 오차가 발생할 수 있음
예시:0.1 + 0.2 != 0.3
DECIMAL
은 10진수 기반의 고정소수점 타입으로, 금액 계산 시 정확성을 보장함
2. 통화 표준에 부합
- 대부분의 통화는 소수점 2자리까지 표현함 (예: USD, EUR 등)
DECIMAL(10,2)
는 실제 통화 단위와 일치하며, 금액 표현에 적합함
3. 할인, 세금, 적립금 계산에 필수
- 할인율, 세율, 적립률 등 퍼센트 기반 계산에는 소수점 연산이 필수
- 정확하지 않은 계산은 결제 오류, 회계 문제, 고객 클레임 발생 가능
4. 반올림 처리 전략 적용 가능
ROUND
,FLOOR
,CEIL
등을 통해 반올림 전략을 명확하게 설정 가능DECIMAL(10,2)
를 사용하면 일관된 정산 로직 구현이 가능함
5. 외부 시스템 연동 시 안정성 확보
- PG사, 회계 시스템, 세무 프로그램 등은 대부분
DECIMAL
기반 금액 포맷 사용 FLOAT
사용 시 금액 불일치나 연동 오류가 발생할 수 있음
결론
정확한 금액 계산, 회계 일관성, 외부 시스템과의 연동 안정성을 위해
금액 필드는 반드시 DECIMAL(10,2)
로 설계해야 한다.
FLOAT
또는 DOUBLE
은 금액 데이터에 사용하지 않는다.