반응형

컴퓨터는 유한한 자원을 사용함으로 무한대 숫자를 표현할 수 없다.

즉 무한대 값이 계속 나오는 부동소수를 표현할 방법이 없다.

 

e: exponent

m : Mantissa (Significant)

따라서 아래와 같이 2바이트로 숫자 2를 base로 하는 em값을 넣어 정확도의 한계를 정해서 실수를 표현할 수 있다. (맨 앞 비트는 부호로만 쓰인다)

단, 실수값 0.0 을 정확히 표현할 수 없다. (0에 수렴하는 근사값이지 정확히 0은 아니다)

왜냐하면 앞의 1.m 은 이미 1을 고정했기 때문에 0이될 수 없고, 뒤 인지 2^e 을 0으로 만들 수 없다.

 

*주의해야할 점은 C언어에서 0 은 "정수"를 의미,  "0.0"은 실수를 의미 함으로 계산시 주의한다.

 

(테스트 결과)

#include "stdio.h"

int main()
{
	int i;
	float num = 0.0;

	for (i = 0; i < 100; i++)
	{
		num += 0.1;
	}

	printf("0.1 다 더한 결과: %f \n", num);

}

맨 끝에 2가 나왔지만, 이는 정확하지 않다. 그 뒤로 쭉 ... 0이 이어질 수 있다.

 

 

 

 

 

반응형

+ Recent posts