# Display a decimal in scientific notation

### Question

How can I display this:

Decimal('40800000000.00000000000000') as '4.08E+10'?

I've tried this:

``````>>> '%E' % Decimal('40800000000.00000000000000')
'4.080000E+10'
``````

But it has those extra 0's.

1
130
7/23/2015 12:50:42 PM

``````from decimal import Decimal

'%.2E' % Decimal('40800000000.00000000000000')

# returns '4.08E+10'
``````

In your '40800000000.00000000000000' there are many more significant zeros that have the same meaning as any other digit. That's why you have to tell explicitly where you want to stop.

If you want to remove all trailing zeros automatically, you can try:

``````def format_e(n):
a = '%E' % n
return a.split('E').rstrip('0').rstrip('.') + 'E' + a.split('E')

format_e(Decimal('40800000000.00000000000000'))
# '4.08E+10'

format_e(Decimal('40000000000.00000000000000'))
# '4E+10'

format_e(Decimal('40812300000.00000000000000'))
# '4.08123E+10'
``````
129
11/23/2016 6:22:44 PM

Here's an example using the `format()` function:

``````>>> "{:.2E}".format(Decimal('40800000000.00000000000000'))
'4.08E+10'
``````