source

MySQL의 10진수(3,2) 값은 항상 9.99입니다.

manysource 2023. 11. 6. 21:55

MySQL의 10진수(3,2) 값은 항상 9.99입니다.

MySQL에는 78.3과 같은 것을 삽입할 때 항상 9.99의 값을 가지는 것으로 보이는 십진법(3,2) 유형의 필드가 있습니다. 왜죠?

내 테이블은 다음과 같습니다.

mysql> describe testtable;
+---------------+--------------+------+-----+---------+----------------+
| Field         | Type         | Null | Key | Default | Extra          |
+---------------+--------------+------+-----+---------+----------------+
| id            | int(11)      | NO   | PRI | NULL    | auto_increment | 
| firstname     | varchar(20)  | YES  |     | NULL    |                | 
| lastname      | varchar(20)  | YES  |     | NULL    |                | 
| justsomenum   | decimal(3,2) | YES  |     | NULL    |                | 
+---------------+--------------+------+-----+---------+----------------+

이와 같은 것을 삽입하고 선택할 때:

mysql> insert into testtable (firstname, lastname, justsomenum) values ("Lloyd", "Christmas", 83.5);

선택할 때 9.99점을 받습니다.

mysql> select * from testtable;
+----+-----------+-----------+---------------+
| id | firstname | lastname  | justsomenum   |
+----+-----------+-----------+---------------+
|  1 | Shooter   | McGavin   |          9.99 | 
|  2 | Lloyd     | Christmas |          9.99 | 
|  3 | Lloyd     | Christmas |          9.99 | 
|  4 | Lloyd     | Christmas |          9.99 | 
+----+-----------+-----------+---------------+
4 rows in set (0.00 sec)

Mac OS X 10.5.8의 MySQL 5.0.86입니다.

무슨 생각 있어요?감사해요.

최대 값:decimal(3, 2)9.99이므로 그보다 큰 것을 넣으려고 하면 9.99로 상한이 정해집니다. 시도해 보세요.decimal(5, 2)더 큰 숫자를 저장하려면 다른 것을 선택해야 합니다.

첫 번째 인수는 정밀도의 총 자릿수이고, 두 번째 인수는 소수점 뒤의 자릿수입니다.

이전 버전에서 MySQL DECIAL(3,2)은 DP 왼쪽으로 3개의 정수, 오른쪽으로 2개를 의미했습니다.

MySQL 개발자들은 그 이후로 MySQL을 변경하여 첫 번째 속성(이 경우 '3')은 십진수의 정수(9.99는 세 개의 숫자)이고 두 번째 속성(이 경우 '2')은 십진수 자리 수와 동일하게 유지됩니다.

좀 헷갈리네요.기본적으로 DECIAL 필드의 경우 DP 이전에 원하는 정수 수를 DP 다음에 원하는 정수 수에 추가하여 첫 번째 옵션으로 설정해야 합니다.

그러면 앞서 설명한 바와 같이 필드의 최대값보다 큰 숫자를 입력하려고 하면 MySQL이 이를 트리밍합니다.여기서 문제는 MySQL 구성입니다.저는 블로그에서 이에 대해 더 자세히 알아봅니다.

언급URL : https://stackoverflow.com/questions/1523173/decimal3-2-values-in-mysql-are-always-9-99