sdaau - 2 months ago 25
Python Question

# Python - fixed exponent in scientific notation?

Consider the following Python snippet:

``````for ix in [0.02, 0.2, 2, 20, 200, 2000]:
iss=str(ix) + "e9"
isf=float(iss)
print(iss + "\t=> " + ("%04.03e" % isf ) + " (" + str(isf) + ")")
``````

It generates the following output:

``````0.02e9  => 2.000e+07 (20000000.0)
0.2e9   => 2.000e+08 (200000000.0)
2e9     => 2.000e+09 (2000000000.0)
20e9    => 2.000e+10 (20000000000.0)
200e9   => 2.000e+11 (2e+11)
2000e9  => 2.000e+12 (2e+12)
``````

My question is - is it possible to "go back" somehow? That is:

``````2.000e+07 => 0.02e9
2.000e+08 => 0.2e9
2.000e+09 => 2e9
2.000e+10 => 20e9
2.000e+11 => 200e9
2.000e+12 => 2000e9
``````

... I'd specify I want the exponent to be "
`e+09`
"; and then whatever number I throw at this hypothetic function, returns the number value in that exponent? Would it be possible to specify zero padding for both the whole and the decimal part in each case? (ie.
`000.0200e9`
and
`020.0000e9`
)?

Format it yourself (see Format Specification Mini-Language):

``````for ix in [.02e9,.2e9,2e9,20e9,200e9,2000e9]:
print('{:.3e} => {:0=8.3f}e9'.format(ix,ix/1e9))
``````

### Output

``````2.000e+07 => 0000.020e9
2.000e+08 => 0000.200e9
2.000e+09 => 0002.000e9
2.000e+10 => 0020.000e9
2.000e+11 => 0200.000e9
2.000e+12 => 2000.000e9
``````

### Explanation

`{:0=8.3f}` means "zero-pad, pad between the sign and the number, total field width 8, 3 places after the decimal, fixed point format".

Source (Stackoverflow)