I agree that the float/numer situation is a mess.
The reliable way to convert a constant expression involving complex
numbers to the rectangular form r+i*%i is
block([numer:true],rectform(expr)) or equivalently
ev(rectform(expr),numer) or (on a command line) rectform(expr),numer.
Converting to the polar form m*%e^(%i*a) or m*%e^(%i*a*%pi) is
messier, because %e^(float*%i) simplifies automatically to the
rectangular form, so the polarform function won't help. I'd suggest
fpolarform(expr):=
numer(cabs(expr))*%e^(%i*%pi*numer(carg(expr)/%pi)),
where numer is a Maxima macro defined as:
numer(x) ::= subst(x, 'x, '(block([numer : true], x)))
-s