from decimal import Decimal
'%.2E' % Decimal('40800000000.00000000000000')
# returns '4.08E+10'
В ваших '40800000000.00000000000000' есть много более значимых нулей, которые имеют то же значение, что и любая другая цифра.Вот почему вы должны четко указать, где вы хотите остановиться.
Если вы хотите автоматически удалить все конечные нули, вы можете попробовать:
def format_e(n):
a = '%E' % n
return a.split('E')[0].rstrip('0').rstrip('.') + 'E' + a.split('E')[1]
format_e(Decimal('40800000000.00000000000000'))
# '4.08E+10'
format_e(Decimal('40000000000.00000000000000'))
# '4E+10'
format_e(Decimal('40812300000.00000000000000'))
# '4.08123E+10'