본문 바로가기

Basic Statistics/#Statistic

[통계] 부동소수점과 오차

컴퓨터에서 실수는 부동소수점(Floating Point)으로 표현된다. 이에 따라 마무리 오차, 오버/언더 플로우, 유효숫자의 상실이 발생한다. 이번 게시글에서는 부동소수점수의 진법 변환과 각각의 오차에 대해 다루고자 한다. 

 

1/ 부동소수점수와 정밀도

* 2배 정밀도: 지수부 11비트, 가수부 52비트 (64비트)로  [2^-1024, 2^1023] 16자리의 정밀도를 갖음

* 단일 정밀도: 지수부 8비트, 가수부 23비트 (32비트)로 [2^-128, 2^127] 6자리의 정밀도를 갖음

2/ 기저의 변환

(1) B진수의 10진수 변환
(2) 10진수의 B진수 변환
(3) 10진 소수의 B진수 변환

 

3/ 오차 (error)

* 절대오차: |X_t - X_A|

* 상대오차: |X_t-X_A| / |X_t| (Scale로 표준화)

 

4/ 유효숫자의 개수 (significant digit)

참값과 비교 시 0이 아닌 첫 자리부터 연속적으로 동일한 자리의 개수

(eg) 참값 3.14159와 3.1425의 유효숫자는 3

 

5/ 마무리 오차

연산 결과를 반올림(rounding), 버림(chopping) 등으로 적절히 정리함에 따라 발생하는 오차

마무리 오차 예제

 

6/ 오버플로우 & 언더플로우

부동 소수점으로 표현 가능한 범위

 

7/ 유효숫자의 상실

연산 과정 중 유효숫자의 상실로 오차 발생

유효숫자의 상실 예제


 

I'm a Senior Student in Data Science ! 

데이터 사이언스를 공부하고 있는 4학년 학부생의 TIL 블로그입니다. 게시글이 도움 되셨다면 구독과 좋아요 :)