Comment puis-je afficher ceci:
Décimal ('40800000000.00000000000000') comme '4.08E + 10'?
J'ai essayé ceci:
>>> '%E' % Decimal('40800000000.00000000000000')
'4.080000E+10'
Mais il a ces 0 supplémentaires.
Comment puis-je afficher ceci:
Décimal ('40800000000.00000000000000') comme '4.08E + 10'?
J'ai essayé ceci:
>>> '%E' % Decimal('40800000000.00000000000000')
'4.080000E+10'
Mais il a ces 0 supplémentaires.
Réponses:
Dans votre '40800000000.00000000000000', 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 de fin, vous pouvez essayer:
la source
format % values
syntaxe toujours utilisée même dans la bibliothèque standard Python 3, je pense qu'elle est techniquement obsolète dans Python 3, ou du moins pas la méthode de formatage recommandée, et la syntaxe actuelle recommandée, à commencer par Python 2.6, serait'{0:.2E}'.format(Decimal('40800000000.00000000000000'))
( ou'{:.2E}'
en Python 2.7+). Bien que cela ne soit pas strictement utile dans cette situation, en raison des caractères supplémentaires pour aucune fonctionnalité ajoutée,str.format
permet un mélange / réarrangement / réutilisation plus complexe des arguments de format.format
. C'est plus jazzy .Voici un exemple utilisant la
format()
fonction:Au lieu du format, vous pouvez également utiliser des f-strings :
documentation officielle
proposition de format original ()
la source
f"{Decimal('40800000000.00000000000000'):.2E}"
Compte tenu de votre numéro
À partir de Python 3,
est la manière recommandée de le faire.
e
signifie que vous voulez une notation scientifique et.2
que vous voulez 2 chiffres après le point. Ainsi vous obtiendrezx.xxE±n
la source
float(x)
que convertir x en float.Personne n'a mentionné la forme courte de la
.format
méthode:Nécessite au moins Python 3.6
(Je crois que c'est la même chose que Cees Timmerman, juste un peu plus court)
la source
{num:E}
dérangent pas, vous pouvez simplement utiliser , où par exemple num = 40800000000.00000000000000Consultez les tableaux du formatage de chaîne Python pour sélectionner la mise en page de format appropriée. Dans votre cas, c'est
%.2E
.la source
Mes décimales sont trop grandes pour
%E
donc j'ai dû improviser:Voici un exemple d'utilisation:
la source
"{:.2e}".format(n)
Retourne simplement'3.39e+7800'
en Python 3.3.2 (v3.3.2: d047928ae3f6, 16 mai 2013, 00:06:53) [MSC v.1600 64 bits (AMD64)] sur win32.Cela a fonctionné le mieux pour moi:
la source
Ceci est une liste consolidée des "Simple" réponses et commentaires .
PYTHON 3
OU Sans
IMPORT
l »Comparant
Donc, pour Python 3, vous pouvez basculer entre l'un des trois pour le moment.
Mon préféré:
la source
Je préfère la manière Python 3.x.
4
indique le nombre de chiffres affichés dans la partie flottante.la source
Pour convertir un décimal en notation scientifique sans avoir à spécifier la précision dans la chaîne de format, et sans inclure les zéros de fin, j'utilise actuellement
Pour conserver les zéros de fin, supprimez simplement le fichier
normalize()
.la source
Voici le plus simple que j'ai pu trouver.
("E" n'est pas sensible à la casse. Vous pouvez également utiliser ".2e")
la source
la source