5.7.7 부동 소수점 데이터
정수는 수학에서 말하는 (부호 없는 정수인) 이나 (부호 있는 정수인) 와 거의 같고, 부동 소수점 타입은 수학의 실수 이나 복소수 에 가깝다. 수학 개념과 C 언어의 차이점은 두 가지다. 하나는 표현할 수 있는 크기가 제한되어 있다는 것이다. 앞에서 정수 타입이 제한된 것과 비슷하다. float.h를 보면 double의 최솟값과 최댓값을 표현하는 DBL_MIN과 DBL_MAX라는 상수가 있다. 그런데 주의할 것은 DBL_MIN은 0.0보다 큰 값 중에서 가장 작은 숫자라는 것이다. 음수인 double 값의 최솟값은 -DBL_MAX다.
그런데 실수()를 물리 시스템에 표현할 때는 이보다 좀 더 까다롭다. 십진수 표현에서 소수점 아래 숫자 3이 무한히 반복되는 이나, 초월수인 π처럼 숫자가 끝없이 전개되지만 반복되지는 않는 경우가 있기 때문이다.
C를 비롯한 여러 프로그래밍 언어에서는 소수점 아래를 자르는 방식으로 이 문제를 해결한다. 자르는 지점이 숫자의 크기에 따라 일정하지 않아서(floating) ‘부동’ 소수점이라 부른다.
부동 소수점 값을 계산하는 과정을 간략히 정리하면 다음과 같다.
s 부호 (±1)
e 지수(정수값)
f1, …, fp 0 또는 1, 가수 비트(mantissa bit)