208 votes

Afficher une décimale en notation scientifique

Comment puis-je afficher ceci :

Décimal('40800000000.000000000000000') comme '4.08E+10' ?

J'ai essayé ceci :

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

Mais il a ces 0 supplémentaires.

188voto

eumiro Points 56644
from decimal import Decimal

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

# returns '4.08E+10'

Dans votre '40800000000.000000000000000', il y a beaucoup plus de zéros significatifs qui ont la même signification que n'importe quel autre chiffre. C'est pourquoi vous devez dire explicitement où vous voulez vous arrêter.

Si vous souhaitez supprimer automatiquement tous les zéros à droite, vous pouvez essayer :

 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'

51voto

patapouf_ai Points 6350

Étant donné votre numéro

 x = Decimal('40800000000.00000000000000')

À partir de Python 3,

 '{:.2e}'.format(x)

est la méthode recommandée pour le faire.

e signifie que vous voulez une notation scientifique, et .2 signifie que vous voulez 2 chiffres après le point. Vous obtiendrez donc x.xxE±n

41voto

Eulenfuchswiesel Points 424

Personne n'a mentionné la forme abrégée de la méthode .format

Nécessite au moins Python 3.6

 f"{Decimal('40800000000.00000000000000'):.2E}"

(Je crois que c'est la même chose que Cees Timmerman, juste un peu plus court)

11voto

Mihai Maruseac Points 10647

Consultez les tableaux du formatage de chaîne Python pour sélectionner la disposition de format appropriée. Dans votre cas, c'est %.2E .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X