Post

실수형 자료형

실수형 자료형

실수

정수데이터와 실수 데이터를 구분하는 이유는?

정수타입데이터와 실수타입데이터를 처리하는 방식 자체가 완전히 다르기 때문이다.




0 ~ 1 까지의 수를 표현한다고 하면 무한대로 만들어 낼 수 있다.

그렇다면 컴퓨터는 이를 어떻게 표현하는 걸까?

  • 컴퓨터가 표현할 수 있는 수는 Byte크기에 따라 한계가 있다.
  • 그렇기에 부동소수점 이라는 표현체계를 사용해서 근사한 값으로 표현한다.

정수와 실수데이터가 혼합되어 연산할 때 둘 중 한쪽 방식을 컴퓨터에게 선택시켜줘야한다.
똑같은 값이라 하더라도 정수와 실수에 따라 표현되는 비트가 완전히 다르기 때문이다.

예)

1
int a = 4 + 4.0;
  • 44.0을 연산시킬 때 결과값을 정수로 할 것인지 실수로 할 것인지를 결정 해줘야 한다.
  • 결과값이 담길 aint자료형을 사용했으므로 정수로 결과를 저장한다고 선택했다는 의미가 된다.
  • 컴퓨터는 계산과정 속에서 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.