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 :

2.7 Ne pas arrondir


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 117
    Par défaut 2.7 Ne pas arrondir
    Bonjour, j'ai un problème au niveau de python 2.7, il m'arrondi automatiquement les nombres :

    >>> 100 * 98 / 366
    26

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pourCent = 100 * (nbValue) / (len(lstChampAll))
    alors que je veux qu'il m'affiche :
    26.77

    D'habitude c'est l'inverse, on se plaint parce que python n'arrondi pas...

    Bref, je viens de migrer de 2.6 à 2.7 et voilà le résultat

    Merci d'avance.

  2. #2
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2013
    Messages
    388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2013
    Messages : 388
    Par défaut
    En PYTHON 2.X, la division d'entiers est un entier.
    On peut utiliser la division de la version 3 disponible dans le module __future__ :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    #!/usr/bin/env python
    # -*- coding:Utf-8 -*-
    from __future__ import division
    print 2 /3

  3. #3
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 293
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 293
    Par défaut
    Il n'a pas de raison d'arrondir puisque tu lui demandes une division entière
    Rien que du très logique.

    Solution: multiplier par 1.0 avant la division pour passer dans les nombres à virgule
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Python 2.6.6 (r266:84292, Dec 27 2010, 00:02:40) 
    [GCC 4.4.5] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> 100*98/366
    26
    >>> 100*98*1.0/366
    26.775956284153004

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 117
    Par défaut
    OK, merci l'astuce du * 1.0 niquel.

    Pour affiche 3 chiffre après la virgule je me suis pas embêté :

  5. #5
    Membre expérimenté Avatar de alexdevl
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    265
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 265
    Par défaut Avec le module decimal
    Bonjour,
    Sinon quand on manipule des nombres au format décimal,il y a la solution d'utiliser le module decimal :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    from decimal import *
    d=100.0 * 98 / 366
    print d
    print Decimal(d).quantize(Decimal('.01'), rounding=ROUND_DOWN)
    Notez que 26.77 est l'arrondi inférieur, la valeur donnée sans
    , rounding=ROUND_DOWN
    est 26.78 (plus proche de d)

    Alex

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

Discussions similaires

  1. ne pas arrondir les nombres
    Par tshokwe dans le forum MATLAB
    Réponses: 3
    Dernier message: 05/07/2011, 13h52
  2. Ne pas arrondir
    Par tajjorf dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 26/07/2010, 15h07
  3. Réponses: 4
    Dernier message: 07/04/2009, 14h40
  4. ne pas arrondir un réel ?
    Par sandokhane dans le forum Débuter
    Réponses: 5
    Dernier message: 21/03/2009, 13h48
  5. Arrondir: RoundTo ne fonctionne pas.
    Par Flagada dans le forum C++Builder
    Réponses: 2
    Dernier message: 09/02/2007, 16h55

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