どなたか知っていましたらレベルの低い質問ですがお願いします。
floatのデータ型を確かめようと下記のソースをコンパイル&実行したところ

0.123457
1234567.000000
1234567.125000

と出力されました。
期待した結果は
「1234567.1234567」
だったのですが何故小数点以下が「.125」になったか超初心者なので解りません。
環境 kernel 2.4.17 + gcc2.95.3

------------------------------
#include <stdio.h>

main()

{

float a,b,c;
a=0.1234567;
b=1234567;
c=a+b;
printf("%f\n",a);
printf("%f\n",b);
printf("%f\n",c);

}
------------------------------