Decimal 구조체
10진수 부동 소수점 숫자
C#/닷넷에 자료형에는 소수를 저장하는 변수가 double과 decimal 두가지가 존재
double은 부동소수점 방식을 이용하고
decimal은 고정소수점 방식을 이용
부동소수점 방식은 장점으론 작은 메모리공간에 큰 소수를 저장 가능하나 정확성이 떨어진다.
고정소수점 방식은 연산 속도가 빠르고 수의 정확성이 높은데신 큰수를 저장할때 메모리를 많이 잡아먹게 된다.
C#에서 double은 8byte 메모리를 사용하며 decimal은 16byte에 메모리를 사용한다.
decimal 미사용 : 0.000000001 -> 1.0E-9
decimal 사용 : 0.000000001 -> 0.000000001
Decimal
정확한 계산이 필요할 시에는 decimal 데이터 타입을 사용하라고 아래와 같이 MSDN은 권고하고 있습니다.
'Single 및 Double에서는 정확하지 않는 숫자가 Decimal에서는 정확하게 표시되는 경우가 있습니다(예: 0.2, 0.3). Decimal에서는 부동 소수점에서보다 산술 연산이 더 느리지만 더 정확한 결과가 나타나므로 성능 감소를 감내할 만한 가치가 있습니다'
'Decimal 데이터 형식은 모든 숫자 형식 중 가장 느린 형식입니다. 데이터 형식을 선택하기 전에 정밀도와 성능 중 무엇이 더 중요한지를 충분히 검토해야 합니다'