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 :

Nombre d�cimal rationnel


Sujet :

Python

  1. #1
    Membre �prouv�
    Profil pro
    Inscrit en
    D�cembre 2008
    Messages
    1 002
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2008
    Messages : 1 002
    Par d�faut Nombre d�cimal rationnel
    Bonjour,

    question basique:

    In [1]: a=0.333 ; print(a)
    0.333

    In [2]: print(type(a))
    <type 'float'>

    In [3]: a=1/3 ; print('%.3f' %a)
    0.000

    In [4]: print(type(a))
    <type 'int'>
    pourquoi?

    comment lui faire comprendre que 1/3 = 0.333 sans �crire :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     a=(.1/3)*10 ; print(a)
    0.333333333333
    Dans mon code original

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    alpha0=28824000000
    mu0=24576000000
    a0ref=alpha0/(alpha0+2*mu0)

    a0ref retourne 0

    Merci

  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,

    Je pense que tu es m�r pour passer � Python 3.

    Et il est temps.

  3. #3
    Membre �prouv�
    Profil pro
    Inscrit en
    D�cembre 2008
    Messages
    1 002
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2008
    Messages : 1 002
    Par d�faut
    j'suis con

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    a=1/3.; print('%.4f' %a)
    0.3333
    EDIT: oui j'pigeais pas pourquoi les exemples sur le net ne faisaient pas apparaitre le pb.. Franchement pour un langage scientifique, python chipote..

  4. #4
    Mod�rateur

    Avatar de Bktero
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 496
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 496
    Billets dans le blog
    1
    Par d�faut
    Tu ne serais pas surtout en train d'afficher en for�ant un format flottant, pour rajouter � la confusion ?

    Python 3:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    >>> a = 3
    >>> type(a)
    <class 'int'>
    >>> print(a)
    3
    >>> print('%f' % a)
    3.000000
    De plus :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    >>> 1/3
    0.3333333333333333
    >>> 1//3
    0

  5. #5
    Membre �prouv�
    Profil pro
    Inscrit en
    D�cembre 2008
    Messages
    1 002
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2008
    Messages : 1 002
    Par d�faut
    Dans les anciennes versions de python

    si a=3 :
    alors : 1/a= 0


    mais si a=3.
    alors : 1/a= 0.333

    Je n'ajoute aucune confusion et ce n'est nullement juste une question d'affichage.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    In [1]: a=3
     
    In [2]: print(1/a)
    0
     
    In [3]: a=3.
     
    In [4]: print(1/a)
    0.333333333333
     
    In [5]: a=3
     
    In [6]: print((1/a)*100)
    0

  6. #6
    Mod�rateur

    Avatar de Bktero
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 496
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 496
    Billets dans le blog
    1
    Par d�faut
    D�j� si tu pr�cisais la version de Python, on gagnerait du temps.

    T'as rien compris ? Dommage...

    Je te la refais en Python 2 :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    >>>a = 3
    >>>1 / a
    0
    >>>1. / a
    0.3333333333333333
    >>>type(a)
    <type 'int'>
    >>>print a
    3
     >>>print('%f' % a) 
    3.000000
    3. est un flottant, 3 est un entier. / fait une division en respectant les types autour. Si tu fais 1 / 3, �a fait une division enti�re ; si tu fais 1 / 3., tu fais une division flottante.

    Ce n'est nullement une question d'affichage ? Et que crois-tu que ton '%.4f' fait ?

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

    Citation Envoy� par Newenda Voir le message
    Rien compris.

    Non dans les anciennes versions de python

    si a=3 :
    alors : 1/a= 0

    mais si a=3.
    alors : 1/a= 0.333
    Il n'y a rien � comprendre: c'est la cons�quence d'un choix discutable fait dans les premi�res versions de Python qui se corrige dans les versions 2.2+ gr�ce � from __future__ import division ou au lancement de Python avec l'option "-Qnew", correction qui a �t� int�gr�e dans Python3.
    Les discussions sur ces sujets et la correction datent du premier semestre 2001 i.e. plus de 15 ans.

    La vraie question serait plut�t de savoir pourquoi un d�butant(*) utilise encore Python2 alors que Python3 est disponible depuis 2008 (bient�t 10 ans) et se torture le cerveau avec des probl�mes qui n'en sont plus.
    (*) sinon, vous sauriez o� chercher la r�ponse � vos questions dans la documentation ou dans les vieilles discussions ;-)

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

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. [MySQL] mettre nombre d�cimal en entier
    Par splouf dans le forum PHP & Base de donn�es
    R�ponses: 11
    Dernier message: 18/01/2006, 12h20
  2. R�ponses: 4
    Dernier message: 21/12/2005, 12h20
  3. [VB.NET] Nombre d�cimal
    Par Sadneth dans le forum ASP.NET
    R�ponses: 8
    Dernier message: 25/11/2005, 12h41
  4. ins�rer un nombre d�cimale dans une table
    Par mouloud�en dans le forum Access
    R�ponses: 4
    Dernier message: 02/10/2005, 21h29
  5. CRITERIA - Repr�sentation binaire d'un nombre d�cimal sign�.
    Par RamDevTeam dans le forum D�cisions SGBD
    R�ponses: 1
    Dernier message: 10/08/2005, 14h56

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