http://en.wikipedia.org/wiki/Floating_point#Internal_representation
많이 보진 말고...필요한 부분만 보시면.. float형은 4byte (32bit)를 차지하는 실수 자료형입니다. 이 수가 확실하게 표현할 수 있는 수의 개수는 보통 7~8개 정도라는 것을 표에서 보여주고 있네요 ...
문제에서는 학생수의 범위, 학생 점수의 범위 등이 언급되있지 않지만..데이터중에 학생의 수가 3자리수인 경우가 있습니다.
이 경우, 평균을 넘는 학생을 표현하는 3개의 수 + 소수점 이하 3자리까지 표현해야하는데 드는 4개의 수(반올림을 고려해서) 가 정확한 값을 가져야하는데... float가 표현할 수 있는 수의 범위를 아슬아슬하게 걸쳐서 오차로 인해 틀린 것입니다.
float형 변수에 1을 1,000,000,000번 더하면 그 결과값은 16,777,216 가 나옵니다. float의 신뢰도가 이정도 수준이죠.
그러니까 게임 프로그래밍이나 임베디드 할거 아니면 float를 멀리하고 double을 쓰는 것이 좋습니다.