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 :

Le calcul de python semble incoéren [Python 3.X]


Sujet :

Python

  1. #1
    Invité
    Invité(e)
    Par défaut Le calcul de python semble incoéren
    Bonjour, je suis désolé pour le titre mais j'ai pas eux d'autre idé, je suis sur Visual studio code de Microsoft et j'ai un problème avec un calcul que fais python
    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
     
    if mode == 31 or mode == 32:
        print ('if')
        terstde = 0.0
        b = 0.0
        while terstde != demandechifrerésulatat:
            print ('if2')
            if mode == 31:
                print (b,terstde,'31')
                b = b + 0.1
                terstde = b * demandechifremultiplicateur
            if mode == 32:
                print (b,terstde,'32')
                b = b + 0.01
                terstde = b * demandechifremultiplicateur
            if terstde > demandechifrerésulatat:
                print ('érreur 1')
                print (b)
                print (terstde)
                break
    le résultat
    if
    if2
    0.0 0.0 31
    if2
    0.1 1.0 31
    if2
    0.2 2.0 31
    if2
    0.30000000000000004 3.0000000000000004 31
    if2
    0.4 4.0 31
    if2
    0.5 5.0 31
    if2
    0.6 6.0 31
    if2
    0.7 7.0 31
    if2
    0.7999999999999999 7.999999999999999 31
    if2
    0.8999999999999999 9.0 31
    if2
    0.9999999999999999 9.999999999999998 31
    if2
    1.0999999999999999 10.999999999999998 31
    érreur 1
    1.2
    12.0
    érreur2

    ce n'est pas du code

    31,uf2,if,érreur et érreur 2 me serve a vérifier ce que python fais

    pour moi il devrais faire
    if
    if2
    0.0 0.0 31
    if2
    0.1 1.0 31
    if2
    0.2 2.0 31
    if2
    0.3 3.0 31
    if2
    0.4 4.0 31
    if2
    0.5 5.0 31
    if2
    0.6 6.0 31
    if2
    0.7 7.0 31
    if2
    0.7 7.0 31
    if2
    0.8 8.0 31
    if2
    0.9 9.0 31
    if2
    1.0 10.0 31
    if
    if2
    1.1 11 31

    Merci d'avance

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 738
    Par défaut
    Salut,

    Ce sont des conséquences de la représentation binaire des nombres flottants très bien expliquée dans ce chapitre (en français) du Python tutorial qui suggère aussi comment faire avec.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Invité
    Invité(e)
    Par défaut
    Justement je veux des nombre flottant mais je dais pas comment arriver au résultat que je veut
    Fichiers attachés Fichiers attachés

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 738
    Par défaut
    Citation Envoyé par JOJOPATRON30 Voir le message
    Justement je veux des nombre flottant mais je dais pas comment arriver au résultat que je veut
    Il faut apprendre à faire avec ce que Python propose...
    C'est pour çà qu'on a écrit des tutos.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Il faut apprendre à faire avec ce que Python propose...
    C'est pour çà qu'on a écrit des tutos.

    - W
    merci

  6. #6
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 830
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 830
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Ce n'est pas inhérent à Python mais à la façon de coder des flottants en binaire. Et ça ressort très bien si on écrit par exemple 0.7 * 3 (2.0999999999999996) ou 2.1 / 3 (0.7000000000000001).

    Citation Envoyé par JOJOPATRON30 Voir le message
    Justement je veux des nombre flottant mais je dais pas comment arriver au résultat que je veut
    Si tu veux calculer les décimaux avec exactitude, utilise la librairie decimal => decimal.Decimal("0.7") * 3 ou bien decimal.Decimal("2.1") / 3. Plus long mais zéro erreur.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  7. #7
    Invité
    Invité(e)
    Par défaut
    merci j'avais trouver ce module mais je n'arrive pas a m'en servir notamment que j'utilise des variable et je me sert de la fonction input
    Dernière modification par Invité ; 19/11/2020 à 08h28.

  8. #8
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 830
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 830
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par JOJOPATRON30 Voir le message
    merci j'avais trouver ce module mais je n'arrive pas a m'en servir
    Il peut manger de l'int (a=decimal.Decimal(123)), du float (b=decimal.Decimal(456.789)) mais c'est malheureux de lui faire manger un truc qui peut avoir perdu de la précision quand il est récupéré alors que le but est justement de ne pas perdre de précision, ou du string (c=decimal.Decimal("456.789")).

    Citation Envoyé par JOJOPATRON30 Voir le message
    notamment que j'utilise des variable et je me sert de la fonction input
    Oui faut aussi arrêter d'être passif et se mettre à raisonner. Si j'écris x=123, alors c'est vraiment une égalité que j'écris. Je peux ensuite utiliser l'un ou l'autre de la même façon, y compris dans le module (a=decimal.Decimal(x)).
    Et la fonction input renvoie une string donc je ne vois pas ce qui peut ne pas marcher... hormis si la string (tapée par l'utilisateur) n'est pas représentative d'un décimal mais ça se règle avec un try...except
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    x=input("Entrez un nombre: ")
    try:
    	x=decimal.Decimal(x)
    except decimal.InvalidOperation:
    	print("%s n'est pas un nombre valide !!!" % x)
    else:
    	print(x, x**2)
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  9. #9
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 738
    Par défaut
    Citation Envoyé par JOJOPATRON30 Voir le message
    merci j'avais trouver ce module mais je n'arrive pas a m'en servir notamment que j'utilise des variable et je me sert de la fonction input

    Pour l'instant, inutile de vous prendre la tête avec la représentation des nombres flottants: vous n'avez pas encore les bases pour mettre en œuvre les solutions.

    C'est pas grave et ce n'est pas le seul domaine où vous allez devoir temporairement refermer la porte en attendant que..

    Les tutos bien faits vous proposent un apprentissage "progressif" et des exercices corrigés. Choisissez en un qui vous motive pour pratiquer et passez y du temps.
    Vous n'avez pas beaucoup d'autres options.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  10. #10
    Invité
    Invité(e)
    Par défaut
    Le but de ce que je fait est pour bien retenir ce que j'apprend
    merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Python 3.X] Calcul Modulo Python
    Par Informatique01 dans le forum Général Python
    Réponses: 3
    Dernier message: 14/01/2017, 17h47
  2. C++ et calcul mathématique (python ? Scilab ?)
    Par K007024 dans le forum C++
    Réponses: 5
    Dernier message: 17/06/2015, 11h23
  3. Allouer plus de processeur pour les calculs sous python
    Par qcha41 dans le forum Général Python
    Réponses: 1
    Dernier message: 11/01/2013, 21h26
  4. Développement logiciel de calculs en Python
    Par icornato dans le forum Général Python
    Réponses: 6
    Dernier message: 22/12/2008, 18h44

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