본문 바로가기

MSSQL

[MSSQL] decimal,numeric,float ,real , int

728x90

INT : 정수형  INT 종류는 크기에 따라 

 tinyint(1바이트) ,  smallint(2바이트) ,  int(4바이트) ,  bigint(8바이트)

 

DECIMAL , NUMERIC  고정소수점 표현 , 정수 또는 소수 표현 

사실 DECIMAL  NUMERIC은 서로 같다. 즉 대체 가능 하다.

예) numeric( 10, 1 ) 최대 10자리 수 인데 반올림하여 소수점 1자리까지 표시 

 select  CONVERT( decimal(10,1), 12345.6789)   ------>  12345.7

 

FLOAT , REAL (MSSQL에서는 DOUBLE사용 안된다. )은 부동소수점 표현  

FLOATREAL에 비해  더 넓게 표현할 수 있다.

예)  select  CONVERT( float,555555.555555555)     ----->  555555.555555555

       select  CONVERT( real,555555.555555555)      ----->    555555.6

 

DECIMAL , NUMERIC과 다르게 근사치를 나타내므로  DECIMAL , NUMERIC 에 비해 정확도가 떨어짐. 

예)  select CONVERT( float ,10) -  CONVERT( float ,0.01) - CONVERT( float ,10)   

예상은   10 - 0.01- 10 =0.01 이지만

실제 출력값은  -0.00999999999999979 나옴

 

그러므로 정확한 계산을 요하는 경우 FLOAT ,REAL 사용은 자제하는게 좋다.

 

 

 

 

BIT 비트 타입 표현  0 또는 1 표시

ex ) select  CONVERT( bit ,'')    ---> 0 

 

    select  CONVERT( bit ,100)    ---> 1

728x90