|
|
|
|
[컴퓨터공학] Float 자료형의 정밀도가 산출되는 과정 및 이유 고찰, 파생되는 Issue
|
|
|
|
Precision of float type
요약
이 문서는 C++ 프로그래밍(CP24106) 교과목의 과제에 대한 내용을 담고 있다. Float 자료형의 정밀도가 산출되는 과정 및 이유에 대하여 고찰하고 그 과정에서 파생되는 Issue에 대하여 다룬다.
주제어: Float, precision, data type
1. Introduction
1.1 주요 개념 파악
1) Data type
그림 1. 주요 Data type(계속)
그림 2. 주요 Data type
위 그림과 같이 c++ 언어에서는 다양한 종류의 자료형이 존재한다. 이를 두고 기본 자료형이라 하며, 이렇게 다양한 종류의 자료형을 제공하는 이유를 살펴보면 크게 두 가지를 들수 있다.
첫째로 데이터의 표현 방식이 다르기 때문이다. 자료형이 크게 두 가지(정수형, 실수형)으로 나누고 있음을 알수 있는데 그 이유에 대해서는 뒤에서 다룰 것이다.
둘째로 메모리 공간을 적절하게 이용하기 위해서이다. 큰 수치를 억지로 작은 크기의 자료형에 담거나 매우 작은 자료를 쓸데없이 큰 자료형에 넣어 메모리를 낭비하는 일을 막을 수 있다.
2) 실수형 데이터 타입
실수형 Data type에는 float, double, long double형이 있다. 이러한 실수형 데이터 타입은 매우 큰 영역의 값을 표현하기 위해 약간의 정밀도를 상실하는 대신 지수(exponent)와 가수(mantissa)라는 방법을 써서 나타내게 되고, 여기서 실수형 데이터 타입의 정밀도(precision)라는 개념이 나타나게 된다.
2. Solving problem
2.1 컴퓨터 내부에서의 실수 계산 방법
1) 실수의 표현식
컴퓨터가 실수를 저장할 때 2진수(binary)로 변환하여 저장하게 된다. 즉, 1.6이란 실수를 저장하면 컴퓨터 내부에서는 2진수 0.8×로 저장된다. 즉, 실수는 아래의 식에 따라 표현된다.
수식 1. 실수 표현식
2) 부동소수점 오차
.... |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|