It seems to me sage isn't doing anything particularly wrong. However, I think you're using the wrong tool for the job: solve is for exact expressions (and has its limitations). When you're putting floats in, the underlying package that does the real work, maxima, will replace them with rational numbers that are close by and do exact arithmetic. That gets rid of rounding errors during the computations, but it does mean that maxima ends up solving a system of equations with slightly different coefficients than you had in mind. Unfortunately, maxima also find a solution that corresponds to the vanishing of the denominator, probably because it cleared denominators before trying to solve (it has negative coefficients, however). Your homework probably expects you to use a numerical method.