본문 바로가기
프로그래밍/C#

C# 단정밀도(Single Precision), 배정밀도(Double Precision)에 대해서

by bantomak 2023. 5. 11.

부동소수점(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)
정밀도가 중요하지 않은 정수가 아닌 연산 값이 매우 크거나 매우 작은 부동소수점 숫자 연산에 사용, 일반적으로 이러한 경우 작업에서 매주 작은 오차 범위가 여전히 허용됩니다. 정밀도가 중요한 작업 (예: 재무 응용 프로그램)

 

함께 읽으면 좋은 글

 

컴퓨터가 실수를 표현하는 방식에 대해서 알아보자

정수를 표현하는 방식 일반적으로 사람들은 10진수를 사용해서 숫자를 표현합니다. 물론 다른 방식으로도 숫자를 표현하는 것이 가능합니다. 16진수(Hexadecimal Number) : 0x7B 10진수(Decimal Number) : 123 8

jettstream.tistory.com

댓글