Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Use 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)

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? (i.e. 000.0200e9 and 020.0000e9)?

like image 678
sdaau Avatar asked Nov 24 '11 20:11

sdaau


People also ask

How do you write an exponent in scientific notation?

To write a number in scientific notation:Move the decimal to a position immediately to the right of the first nonzero digit. value of the exponent. - If you moved the decimal point to the left, make the exponent positive. - If you moved the decimal point to the right, make the exponent negative.

How do I get rid of E+ in Excel?

Unfortunately excel does not allow you to turn this functionality off by default. However if you select your data, right click, and click "Format cells..." and choose Number you can stop excel from changing your data to scientific notation.


1 Answers

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".

like image 129
Mark Tolonen Avatar answered Oct 06 '22 04:10

Mark Tolonen