JavaとCのfloatの違い

floatの足し算の結果が異なる
変数に0.1fを10回足すとCの場合は1.000000と出力されるがJavaでは1.0000001と出力される
なぜそうなるのか詳細は調べていない
環境
CPU:Pentium M
OS:Windows
Javaコンパイラ:1.6.0_11 javac
Cコンパイラ:gcc 3.3.3 (cygwin version)

#include 
 int main(void)
 {
   float f1 = 0.0f;
   int i;
   for(i = 0; i < 10; i++)
     f1 += 0.1f;
   printf("%f", f1);
   return 0;
 }
 public class FloatTest {
   public static void main(String[] args) {
     float f1 = 0.0f;
     for(int i = 0; i < 10; i++)
       f1 += 0.1f;
     System.out.println(f1);
   }
 }