반응형

PostgreSQL에서 real, float, float8, double precision, numeric 타입은 모두 부동 소수점 숫자 또는 고정 소수점 숫자를 저장하는 데 사용됩니다. 각각의 차이점과 사용 방법, 그리고 활용 방안에 대해 알아보겠습니다.

데이터 타입 설명

  1. real
    • 설명: 4바이트 단정밀도 부동 소수점 숫자.
    • 정밀도: 약 6자리의 소수점 자릿수를 가짐.
    • 범위: -3.4E+38 ~ +3.4E+38.
    • 사용: 메모리가 제한적이고, 매우 높은 정밀도가 필요하지 않은 경우에 사용.
  2. float (또는 float8)
    • 설명: 8바이트 배정밀도 부동 소수점 숫자. float8은 double precision의 별칭입니다.
    • 정밀도: 약 15자리의 소수점 자릿수를 가짐.
    • 범위: -1.7E+308 ~ +1.7E+308.
    • 사용: 높은 정밀도가 필요한 경우에 사용.
  3. double precision
    • 설명: 8바이트 배정밀도 부동 소수점 숫자.
    • 정밀도: float와 동일, 약 15자리의 소수점 자릿수를 가짐.
    • 범위: float와 동일, -1.7E+308 ~ +1.7E+308.
    • 사용: 매우 높은 정밀도가 필요한 경우에 사용.
  4. numeric (또는 decimal)
    • 설명: 가변 길이의 정확한 숫자. 소수점 이하 자릿수와 전체 자릿수를 지정할 수 있음.
    • 정밀도: 사용자가 지정한 자릿수까지 정확함.
    • 범위: 매우 넓음, 제한이 없다고 볼 수 있음.
    • 사용: 금액 계산 등 매우 높은 정밀도가 요구되는 경우에 사용.

사용 방법과 예제

real

CREATE TABLE example_real ( id serial PRIMARY KEY, value real ); 
INSERT INTO example_real (value) VALUES (3.14), (2.71); 
SELECT * FROM example_real;

float (float8), double precision

CREATE TABLE example_float ( id serial PRIMARY KEY, value float8 ); 
CREATE TABLE example_double_precision ( id serial PRIMARY KEY, value double precision ); 
INSERT INTO example_float (value) VALUES (3.141592653589793), (2.718281828459045); 
INSERT INTO example_double_precision (value) VALUES (3.141592653589793), (2.718281828459045); 
SELECT * FROM example_float; SELECT * FROM example_double_precision;

numeric (decimal)

CREATE TABLE example_numeric ( id serial PRIMARY KEY, value numeric(10, 2) ); 
INSERT INTO example_numeric (value) VALUES (12345.67), (98765.43); 
SELECT * FROM example_numeric;
 

활용 방안

  1. real: 센서 데이터, 간단한 계산 등 정밀도가 크게 필요 없는 경우에 사용합니다.
  2. float (float8), double precision: 과학 계산, 통계 분석 등 높은 정밀도가 필요한 경우에 사용합니다. float8과 double precision은 동일한 타입이므로 동일한 용도로 사용됩니다.
  3. numeric (decimal): 금액, 금융 데이터 등 매우 높은 정밀도와 정확성이 필요한 경우에 사용합니다. 특히, 소수점 이하 자릿수가 중요한 경우 유용합니다.

요약

  • real은 4바이트 단정밀도 부동 소수점으로, 정밀도가 크게 필요 없는 경우에 사용됩니다.
  • float와 double precision은 8바이트 배정밀도 부동 소수점으로, 높은 정밀도가 필요한 경우에 사용됩니다.
  • numeric은 고정 소수점으로, 정밀도가 매우 중요한 경우에 사용됩니다.
728x90
반응형

+ Recent posts