Sujet : Re: Affichage en notation scientifique.
De : alain (at) *nospam* universite-de-strasbourg.fr.invalid (Alain Ketterlin)
Groupes : fr.comp.lang.pythonDate : 14. Sep 2022, 15:37:36
Autres entêtes
Organisation : Université de Strasbourg
Message-ID : <87a672xbrj.fsf@universite-de-strasbourg.fr.invalid>
References : 1
User-Agent : Gnus/5.13 (Gnus v5.13) Emacs/25.2 (gnu/linux)
Dominique <
zzz@aol.com> writes:
Je m'amuse avec « 100 énigmes mathématique123654789s résolues avec Python »
>
Soit t=1236354, est-il possible d'avoir ce nombre en notation
scientifique 1.236354e6 et récupérer dans une variable l'exposant (6
ici) ?
Il y a deux choses complètement différentes dans ta question :
1) pour formater un flottant en notation scientifique :
"%e" % (123456.0) # ou "{:e}".format (123456.0)
avec des tas de variantes (cf.
https://docs.python.org/3/library/string.html#formatspec)
2) Pour extraire mantisse est exposant, il y a math.frexp, mais
>>> math.frexp (123456.0)
(0.94189453125, 17)
Tout est normal : dans le codage IEEE 754 (utilisé par Python et le
reste du monde), mantisse et exposant sont codés en binaire (pour le
dire vite), et c'est ça qu'on récupère. Bien sûr, m*2**e est égal au
nombre initial.
Si par contre tu veux tout cela "en base 10", tu peux jongler avec
math.floor (math.log10 (...)), qui te donnera l'exposant. Il faut
ensuite diviser explicitement (et gérer le signe à part). Je ne
connais pas de raccourci.
-- Alain.