반응형
컴퓨터는 유한한 자원을 사용함으로 무한대 숫자를 표현할 수 없다.
즉 무한대 값이 계속 나오는 부동소수를 표현할 방법이 없다.
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);
}
반응형
'C언어 \ C++' 카테고리의 다른 글
[C언어] C언어 배열 자동 할당, 배열 부분 할당, 배열 colcumn 값만 할당 (0) | 2022.01.10 |
---|---|
[C언어] C언어 배열의 크기에 대해서, 배열 크기 보기 sizeof 함수 (배열 몇 개 들어있는지 확인) (1) | 2022.01.10 |
[C언어] C언어 음의 정수(Negative Integer)의 비트 표현 방법. 마이너스 비트 표현 (0) | 2022.01.10 |
[C언어] C언어 데이터를 8진수, 10진수, 16진수로 저장 및 출력하기 (0) | 2022.01.09 |
[C언어] printf 함수, scanf 함수 사용법. 입력함수 출력함수 사용법 (0) | 2022.01.09 |