mysql의 float(2,2)와 float()의 차이
MySQL에서 type float(2,2)의 컬럼으로 테이블을 만들고 같은 컬럼에 값 10을 삽입했는데 저장된 값은 0.99입니다.
이 배경에는 어떤 이유가 있나요?MySQL에서 'm'과 'n'이 정수인 float(m, n)형 열을 사용할 경우 이 열에 값을 저장할 때 주의해야 할 점은 무엇입니까?
float(2,2)
는 "두 자리 숫자 사용"을 의미하며, 그 중 두 자리는 소수점 뒤에 사용됩니다.
따라서 -0.99에서 0.99로 변경할 수 있습니다.이 열에 10을 삽입할 수 없습니다. 쉼표 앞에 두 자리 이상이 필요합니다(따라서 float(4,2) 또는 float(2,0)).
MySQL은 비표준 구문인 FLOAT(M,D) 또는 REAL(M,D) 또는 DUBLE PRECISION(M,D)을 허용합니다.여기서 "(M,D)"는 총 M자리까지 값을 저장할 수 있으며, 그 중 D자리는 소수점 이후일 수 있다.예를 들어, FLOAT(7,4)로 정의된 열은 표시될 때 -999.9999와 같습니다.MySQL은 값을 저장할 때 반올림을 수행하므로 999.00009를 FLOAT(7,4) 열에 삽입하면 대략 999.0001이 됩니다.
MySQL은 비표준 구문인 FLOAT(M,D) 또는 REAL(M,D) 또는 DUBLE PRECISION(M,D)을 허용합니다.여기서 "(M,D)"는 총 M자리까지 값을 저장할 수 있으며, 그 중 D자리는 소수점 이후일 수 있다.
MySql에는 FLOAT(M,D)와 같은 데이터 타입이 있습니다.여기서 D는 소수점, M은 소수점 포함 총 자릿수입니다.10진수 정밀도는 FLOAT 및 M이 1~65인 경우 24자리까지 이동할 수 있습니다.구문이 FLOAT(2,2)인 경우 소수점 이하가 2자리뿐이고 실수는 없습니다.따라서 10을 더하고 싶다면 FLOAT(5,2)처럼 사용할 수 있습니다.
여기서 플로트(M,D)는 M=최대 허용 자리수(1~65 범위), D=소수점 뒤의 자리수입니다.따라서 float(5,2)를 변경할 수 있습니다.따라서 float(2,2)는 10번을 입력할 필요가 없습니다.
위의 답변은 맞지만 float(2, 2)는 사용하지 않는 것이 좋습니다.이러한 유형의 선언은 피하는 것이 가장 좋습니다.FLOAT(M,D)에서 (M,D)는 최대 M개의 총 자릿수로 값을 저장할 수 있음을 의미합니다. 여기서 D는 소수점 뒤에 있을 수 있습니다.숫자는 두 번 반올림되거나 잘립니다. 이로 인해 이익보다 문제가 더 많이 발생합니다.그 이유는 부동소수점수가 CPU에 의해 정확한 값이 아닌 대략적인 수치로 처리되기 때문입니다.(M,D) 유형의 선언이 필요한 경우 대신 DISTAL(M,D) 데이터 유형을 사용해야 합니다.
이것은 https://dev.mysql.com/doc/refman/8.0/en/floating-point-types.html에서 인용한 것입니다.
MySQL 8.0.17부터는 비표준 FLOAT(M,D) 및 DOUBLE(M,D) 구문은 권장되지 않으며 향후 MySQL 버전에서 이 구문이 제거될 것으로 예상됩니다.
언급URL : https://stackoverflow.com/questions/7979912/difference-between-float2-2-and-float-in-mysql
'programing' 카테고리의 다른 글
클래스 정의의 목록 이해에서 클래스 변수 액세스 (0) | 2022.10.08 |
---|---|
React에서 중첩된 상태 특성을 업데이트하는 방법 (0) | 2022.10.08 |
Python에서는 여러 컨스트럭터를 정의할 수 없습니까? (0) | 2022.10.08 |
PHP - SSL 인증서 오류: 로컬 발급자 인증서를 가져올 수 없습니다. (0) | 2022.10.08 |
콤마가 있는 문자열을 배열로 변환 (0) | 2022.10.08 |