|
float 와 double 형과 같은 부동 소수점의 값을 표현 할 때는
정수 표현과는 다른 [부호 + 지수부 + 히든비트 + 가수부]의 메카니즘을 갖게 됩니다.
(시간이 나시면 관련 자료를 찾아 보시길)
소수점 아래의 값이 가수부에서 2의 -1승 + 2의 -2승 + ... 식으로 표현되기 때문인데
0.1 같은 소수점을 표현할 때도 여러 비트들의 조합으로 이루어지게 되죠.
따라서, 32비트인 float 형에서 정확히 조립될 수 없는 값들도 많습니다.
double(64비트) 이나 long double (80비트) 에서는 이러한 경우가 대폭 줄어들지만
(double 이상에선 12.4가 정상적으로 표현됩니다)
정확한 값으로 표현 할 수 없는 범위의 숫자들은 역시나 존재하지요.
별도로 더 큰 형태의 소수점을 표현할 자료형을 만드시거나,
double 또는 long double 수준의 표현범위로 양해하셔야 합니다.
|