반대 입장을 취하겠습니다.
FLOAT
는 백분율, 평균 등과 같은 대략적인 숫자를위한 것입니다. 앱 코드에서 또는 FORMAT()
MySQL 의 기능을 사용하여 값을 표시 할 때 형식을 지정해야합니다 .
테스트하지 마십시오 float_value = 1.3
. 실패하는 데는 여러 가지 이유가 있습니다.
DECIMAL
금전적 가치에 사용되어야합니다. DECIMAL
값을 달러 / 센트 / 유로 등으로 반올림해야 할 때 두 번째 반올림을 피합니다. 회계사는 센트를 좋아하지 않습니다.
MySQL의 구현은 DECIMAL
65 자리 유효 숫자 를 허용합니다. FLOAT
7에 대한 및 제공 DOUBLE
(7) (16)에 대해 보통 이상의 센서 및 과학 계산에 충분하다.
"백분율"과 관련하여-때로는 TINYINT UNSIGNED
1 바이트의 저장 공간 만 소비하고 정밀도가 필요하지 않은 경우에 사용했습니다. 때로는 FLOAT
(4 바이트)를 사용했습니다. 백분율에 맞게 특별히 조정 된 데이터 유형이 없습니다. (또한 DECIMAL(2,0)
값을 보유 할 수 100
없으므로 기술적으로 필요합니다 DECIMAL(3,0)
.)
또는 때로는 FLOAT
0과 1 사이의 값을 가진를 사용했지만 "백분율"을 표시하기 전에 100을 곱해야합니다.
더
"백분율, 평균, 속도"의 세 가지가 모두 수레처럼 냄새가납니다.
데이터 유형을 결정하기위한 하나의 기준 ... 값의 사본이 몇 개 존재합니까?
백분율이있는 열이있는 10 억 행 테이블이있는 경우 TINYINT
1 바이트 (총 1GB)가 필요하지만 FLOAT
4 바이트 (총 4GB)가 필요 하다는 것을 고려하십시오 . OTOH, 대부분의 응용 프로그램에는 행이 많지 않으므로 관련이 없을 수 있습니다.
는 '일반'규칙으로, "정확한"값은 어떤 형태를 사용해야 INT
하거나 DECIMAL
. 부정확 한 것 (과학적 계산, 제곱근, 나눗셈 등)을 사용해야합니다 FLOAT
(또는 DOUBLE
).
또한 출력 형식 은 일반적으로 응용 프로그램 프런트 엔드에 남겨 두어야합니다. 즉, "평균"이 "14.6666666 ..."으로 계산 될 수 있지만 디스플레이에는 "14.7"과 같은 것이 표시되어야합니다. 이것은 인간에게 더 친숙합니다. 한편, 나중에 "15"또는 "14.667"을 선호하는 출력 형식으로 결정할 기본 값이 있습니다.
"0.00-100.00"범위 FLOAT
는 출력 형식을 사용 하거나 항상 지정된 정밀도를 원할 것이라는 사전 결정과 함께 DECIMAL(5,2)
(3 바이트) 를 사용 하여 수행 할 수 있습니다 .