본문 바로가기
C언어/따배씨 c언어

[3.12 부동소수점형의 한계]

by newbeverse 2022. 8. 5.
int main() 
{

float a = 0.0f;

a = 0.01f;

printf("%f",a);

return 0;

}

여기서 놀랍게도 , 실제로 a 는 0.01 이 아니다!

?!

아니 그렇다는것은 ... 실제로는 0.09999999997 정도 이다. 

이게 바로 부동 소수점의 한계이다.

반면에 a = 0.25f 였다면...?

실제로 정확히 a = 0.25 로 출력된다. 

왜냐면 부동소수점을 만들기위해 binary or ort or hex를 활용해야하는데, 0.25 같이 어떤것은 정확히 딱 떨어지는 숫자가 나오지만, 0.01 같이 딱 떨어지는 숫자가 아닐 때도 있기 때문이다.

그렇다고 우리가 이런것을 현실적으로 모두 가려가면서 사용할 수 없다.

 

 

 

이 외에도,

infinite ( 최대 허용 범위 초과 ) , subnomal (최소 허용 범위 초과) 가 있으며,

특히 어떤 숫자를 0으로 나누거나 수학적으로 존재하지 않는 값을 계산 함ㄴ, 에러가 난다. (an error)

 

 

 

다음에 계속.... ^_^ ㅋ

반응형

'C언어 > 따배씨 c언어' 카테고리의 다른 글

[4.5 기호적 상수와 전처리기]  (0) 2022.08.05
[4.1 문자열 입출력하기]  (0) 2022.08.05
[3.11 부동소수점형]  (0) 2022.08.05
[3.10 문자형]  (0) 2022.08.04
[3.7 다양한 정수형들]  (0) 2022.08.04