そのような現象が起こるのはC言語の浮動小数点数に限った話ではない

基本的に0か1かの世界であるコンピュータがどうやって浮動小数点数を扱っているのか
その辺のことを考えながらすこし色々調べ直したほうが良い

正確な精度が必要なら浮動小数点数じゃなくて任意精度計算のライブラリを使いましょう