Float на внешний контейнер и не нужен clearfix ?

Обнаружил, что если на внешнем контейнере установлен float, то все внутренние float-блоки внешний прекрасно видит. Зачем тогда нужно добавлять clearfix? Чем плох float на внешнем контейнере? Спасибо!

Насколько я знаю, блок, которому задано свойство float, невозможно выровнять посередине…
Покажите свой код.

То, что сохранилось в саблайме после выполнения задания, ниже.
Основная мысль: если у внешних блоков head, body & footer задать float, то внутренние блоки-флоаты будут видны для внешних без clearfix’а.

Структура html:
<div class="head">
  <div class="header">Header</div>  
  <div class="menu">Menu</div>
  <div class="promo_1">Promo 1</div>
  <div class="promo_2">Promo 2</div>
</div>
<div class="body">
  <div class="body-left">Left</div>
  <div class="body-main">Main</div>
  <div class="body-right">Right</div>
</div>
<div class="footer">Footer</div>

Стили CSS:
.head{
  float: left;
  width: 100%;
  background-color: #34495e;
}
.header{
  float: left;
  background-color: #c0392b;
  width: 100%;
  margin: 10px 40px;
}
.menu{}
.promo_1{}
.promo_2{}
.body{
  float: left;
  width: 100%;
  background-color: white;

}
.body-left{}
.body-main{}
.body-righ{}
.footer{
    float: left;
  width: 100%;
  background-color: #34495e;
}
.clearfix::after{
  content: '';
  display: table;
  clear: both;
}

Ну, вот. Как раз то, о чем я говорила выше. Центровщика нет. И если у внешних блоков float, то отцентрировать их не получится.

Понял. Спасибо!