IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Renvoyer un nombre en écriture scientifique


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Inscrit en
    Août 2010
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 1
    Par défaut Renvoyer un nombre en écriture scientifique
    Bonjour,

    Je souhaiterais retourner une valeur en écriture scientifique en contrôlant l'exposant et le nombre de chiffres avant et après la virgule.
    Si a=1896,75694
    je voudrais renvoyer x=18.9675E2

    Je vous remercie beaucoup d'avance si quelqu'un à une idée qui pourrait m'aider.

    Merci encore.

    A bientôt.

  2. #2
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 062
    Par défaut
    Il faut voir du côté du module Decimal

  3. #3
    Membre confirmé Avatar de sopsag
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    224
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 224
    Par défaut
    le formatage %e devrait convenir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    >>> print "%e"%321.31
    3.213100e+02
     
    >>> print "%.2e"%321.31
    3.21e+02
     
    >>> print "%.2E"%321.31
    3.21E+02

  4. #4
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Je ne connais pas de solution simple pour faire ça avec les flottants normaux.

    Voici un début de solution. Le principe est de passer par un formatage du nombre, ce qui permet de récupérer sous forme de chaines les 3 entiers qui composent le nombre: avant le '.', après le '.' et après le 'e' :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    a=1896.75694
     
    ch = "%e" % a
    print ch
     
    i = ch.find('.')
    j = ch.find('e')
     
    a1 = ch[:i]
    a2 = ch[i+1:j]
    a3 = ch[j+1:]
    print a1, a2, a3
     
    print "diminuer l'exposant de 1:"
     
    b1 = a1 + a2[0]
    b2 = a2[1:]
    b3 = "%+02d" % (int(a3)-1)
    print b1, b2, b3
     
    x = b1 + '.' + b2 + 'e' + b3
    print x
    L'affichage donnera:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    1.896757e+03
    1 896757 +03
    diminuer l'exposant de 1:
    18 96757 +2
    18.96757e+2
    Mais pour faire ça dans le cas général, il faut aller un peu plus loin. Par exemple, augmenter l'exposant de plusieurs unités nécessitera d'ajouter des zéros à gauche. Et pour diminuer plus fortement l'exposant, on peut dépasser le nombre de chiffres significatifs, et donc ajouter des zéros à droite avant le 'e' de l'exposant. Il reste aussi à fixer le nombre de chiffres après la virgule, et aussi, pourquoi pas, de fixer le nombre total de caractères selon les besoins. En s'y prenant comme ça, tout cela est possible!

    Tyrtamos

Discussions similaires

  1. Conversion écriture scientifique > nombre
    Par biboo_ dans le forum Langage
    Réponses: 2
    Dernier message: 29/10/2010, 16h59
  2. afficher en écriture scientifique
    Par speedcore dans le forum C
    Réponses: 7
    Dernier message: 11/10/2010, 22h57
  3. Manipuler des nombres en notation scientifique
    Par enrikomic dans le forum Mathématiques - Sciences
    Réponses: 6
    Dernier message: 11/07/2007, 13h14
  4. Nombre double : écriture étrange
    Par ®om dans le forum Langage
    Réponses: 6
    Dernier message: 27/11/2006, 18h55
  5. [TP] Nombre en notation scientifique
    Par barth.pas dans le forum Turbo Pascal
    Réponses: 8
    Dernier message: 30/08/2006, 20h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo