재우니의 블로그

mssql 의 money 와 decimal 그리고 float 의 차이점

 

그냥 간단하게 나누고 곱하는 값을 출력 테스트 했습니다.

 

float : 부동소수점
decimal : 실수 (numeric 동일)
money : 통화단위

 

dECLARE
    @mon1 MONEY,
    @mon2 MONEY,
    @mon3 MONEY,
    @mon4 MONEY,
    @num1 DECIMAL(19,5), --소수점이하 자동반올림
    @num2 DECIMAL(19,5),
    @num3 DECIMAL(19,5),
    @num4 DECIMAL(19,5),
	@flo1 float, --부동소수점
    @flo2 float,
    @flo3 float,
    @flo4 float

    SELECT
    @mon1 = 100, @mon2 = 339, @mon3 = 10000,
    @num1 = 100, @num2 = 339, @num3 = 10000,
	@flo1 = 100, @flo2 = 339, @flo3 = 10000

    SET @mon4 = @mon1/@mon2*@mon3
    SET @num4 = @num1/@num2*@num3
	SET @flo4 = @flo1/@flo2*@flo3

    SELECT @mon4 AS moneyresult,
    @num4 AS decimalresult,
	@flo4 AS floatresult

 

 

실행해보면, money 는 소수점 이하의 값을 지웁니다.

대신 decimal 은 그대로 버리지 않고 데이터를 가지고 있습니다. 단 '실수' 이므로 6자리 이하의 소수점을 반올림 하게 됩니다. (float 값을 보면 decimal 이 반올림한것을 확인이 가능합니다.)