C언어 \ C++
[C언어] 실수(float number)의 비트 표현, C언어 실수 사용하기, 실수 0.0의 의미
안산드레아스
2022. 1. 10. 00:33
반응형
컴퓨터는 유한한 자원을 사용함으로 무한대 숫자를 표현할 수 없다.
즉 무한대 값이 계속 나오는 부동소수를 표현할 방법이 없다.
e: exponent
m : Mantissa (Significant)
따라서 아래와 같이 2바이트로 숫자 2를 base로 하는 e와 m값을 넣어 정확도의 한계를 정해서 실수를 표현할 수 있다. (맨 앞 비트는 부호로만 쓰인다)
단, 실수값 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);
}
반응형