Deutsch   English   Français   Italiano  
<87a672xbrj.fsf@universite-de-strasbourg.fr.invalid>

View for Bookmarking (what is this?)
Look up another Usenet article

Path: ...!news.mixmin.net!aioe.org!K7PIs9tCGQ+WHJa7e6BylQ.user.46.165.242.75.POSTED!not-for-mail
From: Alain Ketterlin <alain@universite-de-strasbourg.fr.invalid>
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: <tfsmg1$2vqdl$1@dont-email.me>
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 <zzz@aol.com> 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.