C언어/따배씨 c언어
[3.12 부동소수점형의 한계]
newbeverse
2022. 8. 5. 00:28
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)
다음에 계속.... ^_^ ㅋ
반응형