Vous pouvez utilisez le spécificateur de format g
, qui choisit entre la notation exponentielle et la notation "usuelle" en fonction de la précision, et spécifiez le nombre de chiffres significatifs:
>>> "%.3g" % 4.311237638482733e-91
'4.31e-91'
Si vous voulez toujours représenter le nombre en notation exponentielle, utilisez le spécificateur de format e
, alors que f
jamais utilise la notation exponentielle. La liste complète des possibilités est décrite here.
Notez également qu'au lieu de %
la mise en forme de style, vous pouvez utiliser str.format
:
>>> '{:.3g}'.format(4.311237638482733e-91)
'4.31e-91'
str.format
est plus puissant et personnalisable que %
la mise en forme de style, et il est également plus cohérente. Par exemple:
>>> '' % []
''
>>> '' % set()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: not all arguments converted during string formatting
>>> ''.format([])
''
>>> ''.format(set())
''
Si vous n'aimez pas appeler une méthode sur une chaîne de caractères que vous pouvez utiliser la format
fonction intégrée:
>>> format(4.311237638482733e-91, '.3g')
'4.31e-91'
' "% s" % de 4.311237638482733e-91 -> '4.31e-91'' 'f' n'est * pas * le seul moyen de formater un flottant. voir [ici] (https://docs.python.org/2/library/stdtypes.html#string-formatting). Aussi 'str.format' est plus puissant. – Bakuriu
'format (4.311237638482733e-91, '.2e')' ?? –
thx pour la réponse rapide! – Leszek