Re: Affichage en notation scientifique.

Liste des GroupesRevenir à fcl python 
Sujet : Re: Affichage en notation scientifique.
De : alain (at) *nospam* universite-de-strasbourg.fr.invalid (Alain Ketterlin)
Groupes : fr.comp.lang.python
Date : 14. Sep 2022, 18:59:21
Autres entêtes
Organisation : Université de Strasbourg
Message-ID : <875yhpyjrq.fsf@universite-de-strasbourg.fr.invalid>
References : 1 2 3 4 5
User-Agent : Gnus/5.13 (Gnus v5.13) Emacs/25.2 (gnu/linux)
ram@zedat.fu-berlin.de (Stefan Ram) writes:

[...]
  Oui, mais cette approche pourrait entraîner quelques
  irrégularités (comme d'autres approches peut-être).

Cela n'est pas lié spécialement à log10, c'est tout simplement la
représentation des flottants qui a une précision limitée (j'utilise des
chaînes seulement pour comparer à ton code) :

float ( int ('9'*15) )
999999999999999.0
float ( int ('9'*16) )
1e+16

(et effectivement le module decimal permet d'étendre cette précision,
mais elle restera toujours finie).

Tu peux utiliser des entiers (ou même des chaînes de caractères pour une
raison qui m'échappe) si tu veux, mais log10 () va convertir son
argument en flottant avant de calculer quoi que ce soit, ce qui aggrave
les risque d'imprécision.

from math import log10
>
num = ''
for i in range( 16 ):
    num += '9'
    e = int( log10( int( num )))
    print( i, e, num, int( num ), log10( int( num )))

int (... un flottant ...) arrondit vers zéro. Il vaut mieux utiliser
math.floor() pour les petits nombres.

Note que pour i tu traites le nombre (10*(i+2)) - 1 (ou '9'*(i+1)).

[...]
13 13 99999999999999 99999999999999 13.999999999999996
14 15 999999999999999 999999999999999 15.0
15 16 9999999999999999 9999999999999999 16.0

for i in [14, 15, 16]:
    print (float (int ('9'*i)),
           math.log10 (float (int ('9'*i))))

affiche

99999999999999.0 13.999999999999996
999999999999999.0 15.0
1e+16 16.0

donc : pour 14 tout est (à peu près) ok, pour 15 c'est log10 qui
arrondit, pour 16, c'est la conversion en entier qui arrondit.

-- Alain.

Date Sujet#  Auteur
14 Sep 22 * Affichage en notation scientifique.6Dominique
14 Sep 22 +- Re: Affichage en notation scientifique.1Dominique
14 Sep 22 `* Re: Affichage en notation scientifique.4Alain Ketterlin
14 Sep 22  `* Re: Affichage en notation scientifique.3Dominique
14 Sep 22   +- Re: Affichage en notation scientifique.1Dominique
14 Sep 22   `- Re: Affichage en notation scientifique.1Alain Ketterlin

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal