Path: ...!news.mixmin.net!aioe.org!K7PIs9tCGQ+WHJa7e6BylQ.user.46.165.242.75.POSTED!not-for-mail From: Alain Ketterlin Newsgroups: fr.comp.lang.python Subject: Re: Affichage en notation scientifique. Date: Wed, 14 Sep 2022 16:37:36 +0200 Organization: =?utf-8?Q?Universit=C3=A9?= de Strasbourg Message-ID: <87a672xbrj.fsf@universite-de-strasbourg.fr.invalid> References: Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Injection-Info: gioia.aioe.org; logging-data="3155"; posting-host="K7PIs9tCGQ+WHJa7e6BylQ.user.gioia.aioe.org"; mail-complaints-to="abuse@aioe.org"; User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.2 (gnu/linux) X-Notice: Filtered by postfilter v. 0.9.2 Cancel-Lock: sha1:AYKe/sX3hqqHh2Hyy6myNI9MS/0= Bytes: 2167 Lines: 35 Dominique writes: > Je m'amuse avec =C2=AB 100 =C3=A9nigmes math=C3=A9matique123654789s r=C3= =A9solues avec Python =C2=BB > > Soit t=3D1236354, est-il possible d'avoir ce nombre en notation > scientifique 1.236354e6 et r=C3=A9cup=C3=A9rer dans une variable l'exposa= nt (6 > ici) ? Il y a deux choses compl=C3=A8tement diff=C3=A9rentes 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=C3=A9 par Python et le reste du monde), mantisse et exposant sont cod=C3=A9s en binaire (pour le dire vite), et c'est =C3=A7a qu'on r=C3=A9cup=C3=A8re. Bien s=C3=BBr, m*= 2**e est =C3=A9gal 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=C3=A9rer le signe =C3=A0 part). Je ne connais pas de raccourci. -- Alain.