usa un cleaner... SIEMPRE acuerdense de "limpiar" despues de usar float.
Cita: .cleaner{clear:both}
<div id="contenedor">
<div id="contenido"> blablabla </div>
blablabla
<br class="cleaner" />
</div>
la explicación es que al usar float, estas sacando al elemento flotado del normal orden y por lo tanto el contenedor hace de cuenta que no está dentro del contenedor, y height si no esta fijada depende del contenido del elemento.
Con un cleaner lo que se consigue es forzar para que tanto a la derecha como a la izquierda de ese elemento no haya nada flotando, y por lo tanto el contenedor es forzado a bajar para contener al cleaner y por lo tanto contener también al elemento flotado.
Por cierto, el height cuando lo fijas en porcentaje significa que es un % de la altura del padre.
Para que te funcione al 100% tenes que asignarle 100% tambien al elemento html, que es el elemento padre para todos los demás.
Espero con esta explicación no confundir aún más