If you want to know how many real roots there are in a polynomial, you
noticed that there are exact methods in Maxima based on Sturm sequences.
You also suggested that you are concerned about floating-point numbers
in the given polynomial. Assume that they are exact, even if presented
as floats. Again, as you suggest, you can convert them to exact-looking
rational numbers and then use the exact methods. This is consistent
with the usual approach in Maxima, which is to say that if you are using
exact methods and there is a number that appears like
0.5, then it is exactly 1/2. Every floating point number can be
represented exactly as a rational, and if the user does not mean that
number, then it is the user's problem to find the right way to convey
the problem exactly to an exact method. It is not Maxima's problem to
guess how many digits of the user's input should be believed. It should
believe all of them.
If you want to keep the floating-point or bigfloat numbers around, then
I suggest you just offer to do the whole job numerically and be done
with it. Use conventional quadrature and sampling. And let someone
else's program do it.
RJF