INT, FLOAT, DOUBLE, CHAR, DECIMAL 등과 같은 MySQL 데이터 유형에는 모두 고유한 기능이 있습니다. 아래에서는 MySQL 데이터 유형에서 DECIMAL 유형의 기능과 사용법을 주로 소개합니다. 이 글은 MySQL 데이터 타입에서 DECIMAL의 상세한 사용 예에 대한 관련 정보를 주로 소개합니다. 이 글이 모든 사람에게 도움이 되기를 바라며, 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.
일반적으로 부동 소수점 열에 할당된 값은 이 열에서 지정한 십진수로 반올림됩니다. FLOAT(8, 1) 열에 1. 2 3 4 5 6을 저장하면 결과는 1. 2입니다. FLOAT(8, 4)의 컬럼에 동일한 값이 저장되면 결과는 1입니다. 2 3 4 6.
즉, 가능한 가장 정확한 값을 얻으려면 부동 소수점 열을 충분한 자릿수로 정의해야 합니다. 천분의 일까지의 정확도를 원한다면 소수점 이하 두 자리만 포함하도록 유형을 정의하지 마세요.
MySQL3.23에서는 이러한 부동 소수점 값 처리에 예외가 있으며 FLOAT(4) 및 FLOAT(8)의 성능이 변경되었습니다. 이 두 가지 유형은 이제 해당 값이 지정된 형식으로 저장된다는 점에서 단정밀도(4바이트)와 이중 정밀도(8바이트)입니다(하드웨어 제한 사항만 적용됨).
DECIMAL 유형은 DECIMAL이 실제로 문자열로 저장되는 FLOAT 및 DECIMAL과 다릅니다. DECIMAL의 최대 가능 값 범위는 DOUBLE과 동일하지만, 유효 값 범위는 M과 D의 값에 따라 결정됩니다. M을 변경하고 D를 고정한 경우 M이 커질수록 값 범위도 커집니다. 표 2-7의 처음 세 행은 이 점을 설명합니다. M을 고정하고 D를 변경하면 D가 커질수록 값 범위는 작아집니다(그러나 정확도는 높아집니다). 표 2-7의 마지막 세 행은 이 점을 설명합니다.
주어진 DECIMAL 유형의 값 범위는 MySQL 데이터 유형의 버전에 따라 다릅니다. MySQL3.23 이전 버전에서는 DECIMAL(M, D) 열의 각 값이 M 바이트를 차지하고, 부호(필요한 경우)와 소수점이 M 바이트에 포함됩니다. 따라서 DECIMAL(5, 2) 유형의 열은 가능한 모든 5자 값을 포함하므로 -9.99에서 9 9 9 범위의 값을 갖습니다.
MySQL3.23과 마찬가지로 DECIMAL 값은 ANSI 사양에 따라 처리됩니다. ANSI 사양에서는 DECIMAL(M, D)이 M자리와 D자리의 모든 값을 나타낼 수 있어야 한다고 규정하고 있습니다.
예를 들어 DECIMAL(5, 2)는 -999.99부터 999.99까지의 모든 값을 표현할 수 있어야 합니다. 그리고 부호와 소수점을 저장해야 하므로 MySQL3.23부터 DECIMAL 값은 M + 2바이트를 차지한다. DECIMAL(5, 2)의 경우 "가장 긴" 값(-9 9 9 . 9 9)에는 7바이트가 필요합니다.
양수 값 범위의 한쪽 끝에서는 더하기 기호가 필요하지 않으므로 MySQL 데이터 유형은 이를 사용하여 ANSI 사양에서 요구하는 값 범위 이상으로 값 범위를 확장합니다. 예를 들어 DECIMAL(5, 2)의 최대값은 7바이트이므로 9 9 9 9 입니다.
간단히 말하면, MySQL3.23 이후 버전에서는 DECIMAL(M, D)의 값 범위가 이전 버전의 DECIMAL(M + 2, D) 값 범위와 동일합니다. 모든 버전의 MySQL 데이터 유형에서 DECIMAL 열의 D가 0이면 소수점이 저장되지 않습니다. 그 결과 소수점을 저장하는 데 사용된 바이트를 다른 숫자를 저장하는 데 사용할 수 있으므로 열의 값 범위가 확장됩니다.
관련 권장사항:
mysql에서 통화 값을 식별하려면 십진수를 사용해야 합니다
위 내용은 MySQL 데이터 유형에서 DECIMAL의 사용 예에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!