E` comunque una forzatura della semantica.
Non si possono inserire delle scritte direttametne in un <div>; se la DTD e` XHTML Strict e` un errore, se e` transitional e` ammesso, ma non e` chiaro come possano reagire i browser.
Prova a mettere un

all'interno del <div> e metterci dentro i vari <span>. Ci vorrebbe anche del testo esterno agli span per fare un test piu` completo.

E comunque dando il float ad uno <span>, questo viene tolto dal flusso degli altri oggetti.
E` una forzatura semantica, e in tali casi il CSS reagisce come puo`.

Con quale browser stai testando? Perche` in queste cose i browser possono comportarsi diversamente (e non sono violazioni degli standard W3C). Prova anche con un browser diverso.

Ma a mio parere il problema ora dovrebbe essere rendere quello che vuoi fare con i marcatori corretti: finche` usi marcatori a caso, la cosa se funziona e` per caso.
Per questo chiedevo quale e` lo scopo del tutto, in modo da trovare il marcatore piu` adatto.