No, c'è un po' di confusione: il margin: 0 auto; centra l'elemento a cui viene applicato. Se vuoi applicarlo sia al div che al container, devi darlo ad entrambi.
Il text-align: center invece serve per risolvere un bug di Internet Explorer e va applicato a chi contiene l'elemento da centrare. Vediamo due esempi partendo dal medesimo codice HTML:
codice:<body> <div id="container"> <div id="centrato"></div> </div> </body>
Se desideriamo posizionare al centro <div id="centrato"></div> (relativamente alla dimensione di #container), faremo così:
#container {
text-align: center;
}
#centrato {
margin: 0 auto;
text-align: left; /* Annulliamo il precedente text-align*/
}
Se desideriamo centrare anche il #container, il css diventerà così:
body {
text-align: center; /* il contenitore di #container è il tag body */
}
#container {
margin: 0 auto;
}
#centrato {
margin: 0 auto;
text-align: left; /* Annulliamo il precedente text-align*/
}
Il float serve invece per allineare un box a destra o a sinistra, svincolandolo parzialmente dal flusso degli elementi della pagina (ossia dall'ordine in cui sono inseriti). Per capire meglio questo concetto ti consiglio di seguire la guida di html.it sui css :)