Измените его на:
<div style="background-color:black; overflow:hidden;" onmouseover="this.bgColor='white'">
<div style="float:left">hello</div>
<div style="float:right">world</div>
</div>
В основном внешний div содержит только числа с плавающей точкой. Поплавки удаляются из нормального потока. Как таковой, внешний div действительно не содержит ничего и, следовательно, не имеет высоты. Это действительно черный, но вы просто не можете его увидеть.
Свойство overflow: hidden в основном заставляет внешний div заключать числа с плавающей точкой. Другой способ сделать это:
<div style="background-color:black" onmouseover="this.bgColor='white'">
<div style="float:left">hello</div>
<div style="float:right">world</div>
<div style="clear:both></div>
</div>
Да, и просто для полноты, вы действительно должны отдавать предпочтение классам, чтобы управлять стилями CSS.