Mark,
This is actually very hard -- there is no simple way to do it. I posted a similar question here in my post but got no replies and even had tech support look at it and had little resolution. I came up with an approach that works by wrapping the numbers in a temporary function and after turning everything into CForm, doing a string replace. Here is some sample code. mapReplace goes through an expression and replaces the Real numbers with a dummy function acf[ paddedform ]. You can edit the paddedForm below to get your desired format.
mapReplace[exp_] :=
MapAt[acf[
ToString[
PaddedForm[#, {8, 3},
NumberFormat -> (Row[{#1, If[#3 != "", "e", ""], #3}] &)]]] &,
exp, Position[exp, _Real]]
after this you do a stringReplace to clean it all up:
CNumberReformat[expr_] :=
StringReplace[ ToString[mapReplace[expr], CForm],
Shortest["acf(\"" ~~ x__ ~~ "\")"] :> "(" <> x <> ")"]
To use it:
equation = 25.32032 - 4.55 x + 16.0006 z + 2 y + 234.2341*^8
CNumberReformat[equation]
to get
2y + z( 16.001) + ( 2.342e10) + x*( -4.550)
I hope this helps.