% widths are a headache and a half because they do weird out sometimes, though I'm hoping this:
display:block, float: left; width: 32%
... is a typo, since first, commas can't separate properties, and second there is no reason to ever say display:block on a float, since they are inherently so. The only reason to state display on a float is for :inline, and that's JUST to trip a rendering bug in IE that actually fixes the broken margin behavior -- where IE will stack or even double facing floats..
Though as Ryan said, we'd have to see the site in question to weigh in -- though it SOUNDS like you might have a fixed layout, which is accessibility rubbish, or a fluid layout in which case the floats will still expand to what's inside them, so if you have a image or single word longer than it wants to collapse, your floats will stack too big and bust onto the next line.
Honestly, I'd probably use inline-block, let natural spacing do it's job so it's NOT a fixed width table.... since fixed widths are broken inaccessible trash and a complete/miserable /fail/ at web design.
Though again -- wild guess pulling a conclusion out of my rump; would have to see the actual page and it's full code to say for sure.