본문으로 바로가기
728x90
반응형
728x170

개발 언어에서는 실수형 데이터를 float 타입으로 선언하곤 합니다. 이 때문에 DB를 구성할 때도 실수형 데이터가 저장될 열을 FLOAT 타입으로 선언하게 되는데요.

ALTER TABLE 테이블이름 ADD COLUMN 컬럼이름 FLOAT;

이런식으로 선언 시 데이터를 저장한 다음 평균을 내거나 합계를 낼 때 조금씩 차이가 나는 현상이 발생하고,

소수점이 조금 긴 데이터를 저장 시 소수점 몇자리부터 짤리는 현상을 경험하여 알게 되었습니다.

이유는 바로 FLOAT 타입이 근사 값을 저장하기 때문이였습니다. 이 부분은 FLOAT, REAL, DOUBLE PRECISION 모두 동일하였습니다. msdn에서도 다음과 같이 설명하고 있는데요.

부동 소수점 데이터는 근사 값이므로 해당 데이터 형식 범위에 있는 모든 값을 정확하게 표현할 수는 없습니다.
– 출처 : msdn

그래서 실수(float)형 데이터를 DB에 저장할 때는 해당 열을 FLOAT 타입이 DECIMAL를 써 주면 됩니다.

정확한 수치를 저장(소수점이 들어간 실수를 저장하려면 DECIMAL 사용) 하지만 FLOAT와 DOUBLE은 근사치의 숫자를 저장한다는 차이가 있어요. 대신 FLOAT와 DOUBLE은 상당히 큰 숫자를 저장할 수 있습니다.

728x90
반응형
그리드형

댓글을 달아 주세요