#include<stdio.h>
int main()
{
float left=309.15366, right=309.153687, avg=(left+right)/2.0;
printf("%f %f %f\n",left,right,avg);
}
위의 코드를 실행시켜보면 left는 309.153656으로 나오고, avg 309.153687로 나오는 등 의도하지 않은 값들이 나오는 것을 볼 수 있습니다.
컴퓨터는 2진법을 사용하기 때문에 10진수로 된 소수를 완벽하게 표현하는 것은 사실 불가능합니다. 그 중에서도 float은 소수점 5자리 이하의 계산에는 부적합한 자료형입니다. 때문에 소수점 계산에는 double이나 long double을 사용하는 것이 좋습니다