> 데이터 베이스 > MySQL 튜토리얼 > MySQL의 Decimal 유형과 Float Double의 차이점에 대한 자세한 소개

MySQL의 Decimal 유형과 Float Double의 차이점에 대한 자세한 소개

黄舟
풀어 주다: 2017-03-24 13:20:17
원래의
1994명이 탐색했습니다.

다음 편집자는 MySQL의 Decimal 유형과 Float Double(자세한 설명) 유형의 차이점에 대한 기사를 가져올 것입니다. 에디터가 꽤 좋다고 생각해서 지금 공유해서 참고용으로 올려보겠습니다. 편집기를 따라가서 살펴보겠습니다.

MySQL에는 float, double, 등 비표준 데이터 유형이 있고, 십진수 등 표준 데이터 유형도 있습니다.

차이점은 float, double 등 비표준형은 대략적인 값을 DB에 저장하는 반면, Decimal은 값을 문자열 형태로 저장한다는 점입니다.
Float 및 double 유형은 부동 소수점 숫자(예: 십진수 유형)를 저장할 수 있지만, float에는 제공한 데이터가 정수인 경우 이를 정수로 처리한다는 단점이 있습니다. 이런 식으로 통화 가치를 입출금할 때 자연스럽게 문제가 발생합니다. 내 기본값은 0.00이고 실제 저장량은 0입니다. 마찬가지로 통화를 입출금할 때 12.00이고 실제 저장량은 12입니다.

다행히 mysql은 두 가지 데이터 유형, 즉 십진수를 제공합니다. 이 데이터 유형은 위의 문제를 쉽게 해결할 수 있습니다. 십진수 유형은 SQL92 표준에서 허용되는 동일한 유형으로 MySQL에서 구현됩니다. 금전 관련 데이터 등 정확성이 중요한 값을 저장하는 데 사용됩니다.

데이터 정의

float(M,S) M은 전체 길이, S는 소수점 이하 길이입니다. 인터넷에는 부정확한 예가 많습니다. 복사는 다음과 같습니다.

mysql> create table t1(c1 float(10,2), c3decimal(10,2));
Query OK, 0 rows affected (0.02 sec)
mysql> insert into t1 values(9876543.21, 9876543.12);
Query OK, 1 row affected (0.00 sec)
mysql> select * from t1;
+----------------+-----------------+
| c1 | c3 |
+----------------+-----------------+
| 9876543.00 | 9876543.12 |
+----------------+------------------+
로그인 후 복사

2행 세트(0.00초)

또 다른 예: DECIMAL (5,2)

mysql> create table t1(id1 float(5,2) default null,id2 double(5,2) default null,id3 decimal(5,2) default null );
mysql> insert into t1 values(1.2345,1.2345,1.2345);Query OK, 1 row affected, 1 warning (0.04 sec)
mysql> show warnings;
+-------+------+------------------------------------------+
| Level | Code | Message |
+-------+------+------------------------------------------+
| Note | 1265 | Data truncated for column 'id3' at row 1 |
+-------+------+------------------------------------------+
1 row in set (0.00 sec)
로그인 후 복사

1.2345 --- 소수점 이하 2자리까지 저장이 가능하도록 자동으로 반올림 및 잘림 처리되며, 하지만 약해짐

이 보고됩니다.

12.34 --- OK

1234.5 --- 소수점이 2자리 미만이므로 0을 추가해야 합니다. 1234.50으로 저장되었습니다. 따라서 전체 자릿수가 5자리를 초과하며, 저장 시 오류가 발생합니다.

1.2 --- 소수점 이하 부분은 0으로 채웁니다. 1.20에 따라 저장합니다.

기본 상태 비교

경도와 축척을 부동 소수점 수로 쓰지 않으면 에 따라 저장됩니다. 실제 정밀도 값이 있으면 반올림된 결과가 자동으로 삽입되며, 고정 소수점 숫자에 대해 정밀도와 스케일이 기록되지 않으면 시스템은 오류를 보고하지 않습니다. 기본값은 10진수(10,0)입니다. 데이터가 정밀도 및 배율 값을 초과하면 시스템에서 오류를 보고합니다.

위 내용은 MySQL의 Decimal 유형과 Float Double의 차이점에 대한 자세한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿