실수형 자료형
실수형 자료형
실수
정수데이터와 실수 데이터를 구분하는 이유는?
정수타입데이터와 실수타입데이터를 처리하는 방식 자체가 완전히 다르기 때문이다.
0
~ 1
까지의 수를 표현한다고 하면 무한대로 만들어 낼 수 있다.
그렇다면 컴퓨터는 이를 어떻게 표현하는 걸까?
- 컴퓨터가 표현할 수 있는 수는
Byte
크기에 따라 한계가 있다. - 그렇기에 부동소수점 이라는 표현체계를 사용해서 근사한 값으로 표현한다.
정수와 실수데이터가 혼합되어 연산할 때 둘 중 한쪽 방식을 컴퓨터에게 선택시켜줘야한다.
똑같은 값이라 하더라도 정수와 실수에 따라 표현되는 비트가 완전히 다르기 때문이다.
예)
1
int a = 4 + 4.0;
-
4
와4.0
을 연산시킬 때 결과값을 정수로 할 것인지 실수로 할 것인지를 결정 해줘야 한다. - 결과값이 담길
a
는int자료형
을 사용했으므로 정수로 결과를 저장한다고 선택했다는 의미가 된다. - 컴퓨터는 계산과정 속에서
4
+4.0
이라는 계산을 연산하기 위해 실수체계표현에서 정수체계표현으로 형변환을 한 뒤에 계산했다.
이것이 자신의 의도인지 아닌지 알기 위해 명시적으로 변환하자.
1
float f = 10.2415f + (float)20;
컴퓨터는 실수에서의 계산을 특정 숫자를 정확하게 표현하는게 아닌, 근삿값 으로 표현한다.
그렇기 때문에 올바른 계산식을 썻는데도 소수를 정확하게 계산하지 못해 버그가 생길 수 있다.
- 정수표현 방식과 실수표현 방식은 다르다.
- 실수표현 방식은 정밀도에 의존한다.
따라서 double
(8Byte) 자료형이 float
(4Byte) 보다 더 아래의 소수점까지 정확하게 표현이 가능하다.
정수는 정수끼리, 실수는 실수끼리 연산하되, 두 표현방식의 피 연산자가 연산될 경우 명시적으로 변환하자.
This post is licensed under CC BY 4.0 by the author.