소수점 표현하는 타입인 float
은 여러번 들어보았지만.. double
, decimal
은 ...?(넌 누구냐)
이번 블로그에서는 소수점을 표현하는 타입을 알아보겠습니다.
float
은 부동소수점 타입으로, 소수점의 위치가 데이터의 형태에 따라 바뀔 수 있다는 점이라는 유동적인 면을 가지고 있습니다.
float
은 4byte의 값범위를 가지고 있으며 IEEE 754 부동소수점 모델을 따릅니다.
double
도 또한 부동소수점 타입으로, 소수점의 위치가 데이터의 형태에 따라 바뀔 수 있다는 점이라는 유동적인 면을 가지고 있습니다.
double
은 8byte의 값범위를 가지고 있으며 IEEE 754 부동소수점 모델을 따릅니다. 주로 C#에서 사용합니다.
decimal
은 float, double과는 달리, 고정소수점 타입이고 16byte의 값범위를 가지지만 IEEE 754모델을 따르지 않습니다. 이는 IEEE 754 모델의 저장방식에 따른 계산 시 오차 발생이 거의 없어짐을 의미합니다.
예를 들어 부동소수점에 3.65를 저장하면 간혹 3.649999999으로 저장되는 경우가 있습니다. 이를 라운드오프라고 합니다.
decimal
은 float이나 double에 비해 비교적 정확하게 값을 다루지만 계산속도가 상대적으로 느리다는 단점이 있습니다. 따라서 문제점이 전혀 없어야 하는 분야(금융분야, 이자율 계산 등)에서는 decimal을 사용합니다.