부동소수점(Floating point)
- 부동소수점의 표현 방법에 대해서는 IEEE754에서 32bit single-precision과 64bit double-precision 표준을 정하고 있는데 이것이 바로 float와 double의 규격이다.
- 기본적인 구조는 최상위 비트는 부호를 표시하는데 사용하고 지수부(Exponent)와 가수부(Fraction/Mantissa)로 구성되어 있다.
- 부호비트는 0일 경우 양수, 1일 경우 음수를 의미한다.
단정밀도(Single Precision)
- 단정밀도는 부동소수점을 표현하기 위해서 32bit(4바이트)를 사용합니다.
- 8비트의 지수부(Exponent)
- 23비트의 가수부(Mantissa)
- 배정밀도보다 빠르고 더 적은 리소스를 사용
- C# float는 단정밀도로 표현된다.
배정밀도(Double Precision)
- 배정밀도는 부동소수점을 표현하기 위해서 64bit(8바이트)를 사용합니다.
- 11비트의 지수부(Exponent)
- 52비트의 가수부(Mantissa)
- 단정밀도보다 느리지만 더 정확한 실수를 표현 가능
- C# double은 배정밀도로 표현된다.
각 타입별 정리
float | double | decimal | |
.NET type | System.Single | System.Double | System.Deciaml |
크기(Size) | 32bit | 64bit | 128bit |
접미사(Literal suffix) | f or F | d or D | m or M |
정확도(Precision) | 9 decimal digits | 17 decimal digits | 29 decimal digits |
범위(Range) | -3.402823 x 1038 to 3.402823 x 1038 |
-1.79769313486232 x 10308 to 1.79769313486232 x 10308 |
-7.9228 x 1028 to 7.9228 x 1028 |
사용 추천 (Recommended For) |
정밀도가 중요하지 않은 정수가 아닌 연산 | 값이 매우 크거나 매우 작은 부동소수점 숫자 연산에 사용, 일반적으로 이러한 경우 작업에서 매주 작은 오차 범위가 여전히 허용됩니다. | 정밀도가 중요한 작업 (예: 재무 응용 프로그램) |
함께 읽으면 좋은 글
'프로그래밍 > C#' 카테고리의 다른 글
C# 컬렉션 - System.Collections.ArrayList (4) | 2023.05.22 |
---|---|
P/Invoke란 무엇인가? (48) | 2023.05.19 |
C# ProtectedSessionStorage 클래스 (4) | 2023.05.10 |
C# 히트맵(HeatMap) 그리기 (4) | 2023.05.08 |
C# 날짜 서식 지정자(Datetime Format Specifier)에 대해서 (6) | 2023.05.04 |
댓글