답변:
DOUBLE 열은 DECIMAL 열과 같지 않으므로 재무 데이터에 DOUBLE 열을 사용하면 문제가 발생 합니다.
DOUBLE은 실제로 FLOAT 의 배정도 (32 비트 대신 64 비트) 버전입니다 . 부동 소수점 숫자는 실수의 대략적인 표현이며 정확하지 않습니다. 실제로 0.01과 같은 간단한 숫자는 FLOAT 또는 DOUBLE 유형에서 정확하게 표현되지 않습니다.
DECIMAL 열은 정확한 표현이지만 훨씬 적은 수의 가능한 범위를 위해 더 많은 공간을 차지합니다. 0.0001에서 99.9999 사이의 값을 보유 할 수있는 열을 만들려면 다음 명령문이 필요합니다.
CREATE TABLE your_table
(
your_column DECIMAL(6,4) NOT NULL
);
열 정의는 DECIMAL (M, D) 형식을 따릅니다. 여기서 M 은 최대 자릿수 ( 정밀도 )이고 D 는 소수점 오른쪽에있는 자릿수 ( 스케일 )입니다.
이는 이전 명령이 -99.9999에서 99.9999 사이의 값을 허용하는 열을 작성 함을 의미합니다. 0.0000에서 99.9999 범위의 UNSIGNED DECIMAL 열을 만들 수도 있습니다.
MySQL DECIMAL에 대한 자세한 내용은 공식 문서 는 항상 훌륭한 자료입니다.
이 모든 정보는 MySQL 5.0.3 이상의 버전에 해당된다는 것을 명심하십시오. 이전 버전을 사용하는 경우 실제로 업그레이드해야합니다.
DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL]
. 음수 값에 대해서는 범위를 벗어난 오류를 반환합니다. 마찬가지로 서명되지 않은 FLOAT 및 DOUBLE을 만들 수 있습니다. 매뉴얼 : dev.mysql.com/doc/refman/5.0/en/numeric-type-overview.html
위의 답변은 정확 해 보이지만 작동 방법에 대한 간단한 설명 만 제공하면됩니다.
열이로 설정되어 있다고 가정하십시오 DECIMAL(13,4)
. 즉, 열의 총 크기는 13 자리이며,이 중 4 개가 정밀 표현에 사용됩니다.
따라서 요약하면 해당 열의 최대 값은 다음과 같습니다. 999999999.9999