int main()
{
double dd;
int ii;
dd = 149.95;
ii = (int)(dd * 100.);
printf("double:[%f]\n", dd);
printf("integer:[%d]\n", ii); /* 14995 대신 14994 가 나오는 에러 */
}
위 식에서 14995 를 기대하지만 실제로는 14994 가 나온다.
dd = dd * 10000 / 100; dd2 = dd
식으로 바꾸면 되기는 한다.
그런데 깔끔한 해결책이 아닌 것 같다.
또 한가지 재미있는 것은 위 처럼 오류가 나는 것은 N.95 일때 뿐이다. N 은 8 이상의 값.
N.94, N.96 등은 문제없이 작동한다.
위 식에서 14995 를 기대하지만 실제로는 14994 가 나온다.
dd = dd * 10000 / 100; dd2 = dd
식으로 바꾸면 되기는 한다.
그런데 깔끔한 해결책이 아닌 것 같다.
또 한가지 재미있는 것은 위 처럼 오류가 나는 것은 N.95 일때 뿐이다. N 은 8 이상의 값.
N.94, N.96 등은 문제없이 작동한다.