필드 유형이 float (10, 7) 인 mysql에 테이블이 있습니다. I am trying to insert value 1196.104, Even when using phpmyadmin it converts that value to 1000.0000000. 1196.104 값을 데이터베이스에 올바르게 저장하려면 어떤 유형을 사용해야합니다.
해결 방법
이것은 FLOAT (10,7)
에서 의도 한대로 정확하게 작동합니다. 자릿수에 맞지 않는 값을 제공하면 값을 제한하고 적합 할 수있는 가장 큰 값을 사용합니다.
이 경우 10 자리 값인 999.9999999는 1000.0000000으로 반올림됩니다.
MySQL은 비표준 구문 (FLOAT (M, D) 또는 REAL (M, D) 또는 DOUBLE PRECISION (M, D))을 허용합니다. 여기서 (M, D)는 총 M 자리까지 저장할 수있는 값을 의미하며,이 중 D 자리는 소수점 뒤에 올 수 있습니다.
즉, 당신 은 1000.0000000에서 최대 값을 초과하도록 제약 조건을 부여했습니다. 10 자리에서 최대 값을 지정 했으므로이 중 7 자리는 소수점 오른쪽에 있습니다.
mysql> create table f ( f float(10,7));
mysql> insert into f values (1196.104);
Query OK, 1 row affected, 1 warning (0.02 sec)
mysql> show warnings;
+---------+------+--------------------------------------------+
| Level | Code | Message |
+---------+------+--------------------------------------------+
| Warning | 1264 | Out of range value for column 'f' at row 1 |
+---------+------+--------------------------------------------+
mysql> select * from f;
+--------------+
| f |
+--------------+
| 1000.0000000 |
+--------------+
더 큰 값을 저장하려면 사용하는 값을 저장할 수있는 충분한 숫자로 FLOAT
를 선언하십시오. 예를 들어 1196.104 값을 FLOAT (11,7)
또는 FLOAT (10,6)
에 삽입 할 수 있습니다.
또는 인수없이 FLOAT
를 사용할 수 있으며 자릿수를 전혀 제한하지 않습니다.
FLOAT에 대한 몇 가지주의 사항이 있습니다. 정확하지 않은 숫자 유형이며 반올림 오류가 있습니다. 이것은 FLOAT가 구현되는 방식 때문에 피할 수 없으며 모든 프로그래밍 언어에 영향을 미칩니다.
이것에 대한 내 오래된 트윗도 참조하십시오.
참조 페이지 https://stackoverflow.com/questions/51197976
'MySql' 카테고리의 다른 글
MySQL 오류 : IP 주소에서 호스트 이름을 가져올 수 없습니다. (0) | 2020.10.17 |
---|---|
MySQL "SELECT COUNT (*)"는 where 절에서도 느립니다. (0) | 2020.10.17 |
MySQL은 innodb 테이블의 행 수를 얻습니다. (0) | 2020.10.17 |
MySQL 이 "MySQL 오류 # 1054-알 수없는 열"오류의 원인은 무엇입니까? (0) | 2020.10.17 |
MySQL에서 STRAIGHT_JOIN을 사용하는 경우 (0) | 2020.10.16 |
댓글