Sorry for my previous answer, which I hope has been deleted.
Fields are complex. In this case, the fields are not taken into account in the floats: they are calculated from the place where the element is started if the float was not there. Perhaps you can apply margin-right to the float, or if you know that the width of the float adds it plus its margin to the value you want to split.