Thank you for your suggestion.
What I was really hoping for was something like the C/Python "%e" format, that always produces a string of the same length, so it could be used, for example, to print data in nicely aligned columns:
1.000e12
-1.000e9
1.000e3
-1.000e1
1.000e0
-1.000e-1
If I understand it correctly, your proposal for an individual number would be something like
CFormat[x_,n_,f_]:= ToString[
PaddedForm[x, {n, f},
NumberFormat -> (Row[{#1, If[#3 != "", "e", ""], #3}] &)
]
]
but that doesn't create strings of a fixed length, e,g,
"<" <> CFormat[1.0*^6,9,3] <> ">"
< 1.000e6>
"<" <> CFormat[10,9,3] <> ">"
< 10.000>
I still don't understand how PaddedForm works. In the example above, the "9" that gets passed to PaddedForm doesn't cause it to produce a string of length 9: the actual output is much longer.