I'm not really familiar with the C source of python, but poking about I think that // is implemented by:
float_floor_div(PyObject *v, PyObject *w)
{
    double vx, wx;
    double mod, floordiv;
    CONVERT_TO_DOUBLE(v, vx);
    CONVERT_TO_DOUBLE(w, wx);
    if (wx == 0.0) {
        PyErr_SetString(PyExc_ZeroDivisionError, "float floor division by zero");
        return NULL;
    }
    _float_div_mod(vx, wx, &floordiv, &mod);
    return PyFloat_FromDouble(floordiv);
}
While we could dive into _float_div_mod(), but since it looks to be the basis of python's implementation of divmod(), I just tried this:
divmod(10.5, 2.1)
Giving me:
(4.0, 2.0999999999999996)
So, the answer seems to be chocked up to Is floating point math broken?