긴 십진수 저장을 위한 MySQL 데이터 타입
소수점 아래 자릿수가 매우 긴 십진수를 MySQL에 저장하려면 DECIMAL(21,20) 데이터 타입을 사용하면 됩니다.
DECIMAL(M, D) 형식에서 M은 전체 자릿수, D는 소수점 이하 자릿수를 의미합니다. 즉, DECIMAL(21,20)은 소수점 앞 1자리, 소수점 뒤 20자리까지 총 21자리를 정확하게 저장할 수 있어 부동 소수점 타입(FLOAT, DOUBLE)에서 발생할 수 있는 오차 없이 정밀한 값을 다룰 수 있습니다.
1. 테이블 생성
먼저 DECIMAL(21,20) 타입의 컬럼을 가진 테이블을 생성해 보겠습니다.
mysql> create table DemoTable1493
-> (
-> LongValue DECIMAL(21,20)
-> );
Query OK, 0 rows affected (0.48 sec)
2. 데이터 삽입
INSERT 명령어를 사용해 소수점 자릿수가 긴 값들을 테이블에 삽입합니다.
mysql> insert into DemoTable1493 values(1.0047464644664677373);
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable1493 values(5.999999484757773);
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable1493 values(0.009994995885885);
Query OK, 1 row affected (0.21 sec)
3. 결과 확인
SELECT 문을 사용해 테이블의 모든 레코드를 조회합니다.
mysql> select * from DemoTable1493;
실행하면 다음과 같은 결과가 출력됩니다.
+------------------------+
| LongValue |
+------------------------+
| 1.00474646446646773730 |
| 5.99999948475777300000 |
| 0.00999499588588500000 |
+------------------------+
3 rows in set (0.00 sec)
출력 결과를 보면 입력한 값들이 소수점 20자리까지 손실 없이 그대로 저장된 것을 확인할 수 있습니다. 이처럼 금융 계산이나 과학 데이터처럼 높은 정밀도가 필요한 경우에는 FLOAT나 DOUBLE 대신 DECIMAL 타입을 사용하는 것이 안전합니다.