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 :

Problème de typage (enfin je crois)


Sujet :

Python

  1. #1
    Nouveau candidat au Club
    Femme Profil pro
    Enseignant
    Inscrit en
    Janvier 2018
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2018
    Messages : 1
    Par défaut Problème de typage (enfin je crois)
    Bonjour,
    je suis débutante en Python
    Nom : 2018-01-25_08h23_32.png
Affichages : 143
Taille : 13,9 Ko
    Nom : 2018-01-25_08h23_57.png
Affichages : 129
Taille : 4,7 Ko
    Bonjour voici un petit programme et son résultat
    Quand je rentre n'importe quel nombre tout va bien j'ai la valeur décimale exacte mais pour 51 j'obtiens un décimal bizarre
    Pourriez-vous m'expliquer pourquoi et comment y remédier ?
    Merci d'avance

  2. #2
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Salut,

    C'est normal les réels ont toujours une valeur d'imprécision.
    Toutefois suffisamment petite que pour être ignorée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    >>> 51 * 0.1
    5.1000000000000005
    >>> 51 * 0.15
    7.6499999999999995
    Pour ne garder que l'essentiel, utilise round()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    >>> round(51*1.0, 2)
    51.0

  3. #3
    Membre Expert

    Homme Profil pro
    Ingénieur calcul scientifique
    Inscrit en
    Mars 2013
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur calcul scientifique

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 229
    Par défaut
    Utilises la balise CODE pour poster du code (le bouton avec le #).

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    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 741
    Par défaut
    Salut,

    Citation Envoyé par thais8026 Voir le message
    Pourriez-vous m'expliquer pourquoi et comment y remédier ?
    C'est une des conséquences de la représentation des nombres flottants en binaire mais cela et que faire est très bien raconté ici.

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

  5. #5
    Membre Expert Avatar de plxpy
    Homme Profil pro
    Ingénieur géographe
    Inscrit en
    Janvier 2009
    Messages
    792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur géographe
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2009
    Messages : 792
    Par défaut
    Intuitivement ça se comprend : on ne peut pas faire correspondre parfaitement un ensemble infini mathématique (grand R, les réels) à un ensemble fini (classiquement 8 octets soit 64 bits)

    Ainsi, l'addition, en informatique, est - dans des cas extrêmes ! - moyennement commutative ... :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    >>> 1e300-1e-100-1e300
    0.0
    >>> 1e300-1e300-1e-100
    -1e-100
    >>>
    >>> 1e300-1e-100-1e300 == 0.
    True
    >>> 1e300-1e300-1e-100 == 0
    False

Discussions similaires

  1. problème d'interop (enfin, je crois)
    Par JennBBd dans le forum VB.NET
    Réponses: 1
    Dernier message: 27/09/2007, 17h12
  2. Problème de boucle enfin je crois !
    Par Selecteur dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/06/2007, 21h51
  3. [MySQL] Problème avec UPDATE enfin, je crois
    Par dutbas dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 24/05/2007, 18h53
  4. Réponses: 3
    Dernier message: 23/05/2007, 16h07
  5. problème de transtypage (enfin je crois)
    Par troussepoil dans le forum C++
    Réponses: 5
    Dernier message: 02/03/2007, 17h32

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