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

Langage PHP Discussion :

Arrondir avec PHP_ROUND_HALF_DOWN [PHP 7]


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    173
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 173
    Points : 83
    Points
    83
    Par défaut Arrondir avec PHP_ROUND_HALF_DOWN
    Bonjour à tous,

    J'ai un petit problème d'arrondi que je n'arrive pas à résoudre.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    round((($donnees['JTE1']/10) +($donnees['JTE2']/10)+($donnees['JTE3']/10)+($donnees['JTE4']/10))/4,1,PHP_ROUND_HALF_DOWN);
    8.2+8.2+8.9+7.4=32.7/4=8.175 avec mon round cela donne 8.2, je dois normalement arriver à 8.1.

    Qu'est ce que je ne fais pas bien?

    Merci

  2. #2
    Expert éminent sénior
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 094
    Points : 16 606
    Points
    16 606
    Par défaut
    Salut

    Avec le paramètre PHP_ROUND_HALF_DOWN, le résultat 8.2 est bien entendu normal:
    8.175 dernière décimale 5 donc l'arrondi tend vers 0
    8.170 avant dernière décimale 7 donc l'arrondi tend vers 10
    8.1 + 0.10 = 8.2

    Pour t'en convaincre PHP: round - Manual

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    173
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 173
    Points : 83
    Points
    83
    Par défaut
    Merci pour le retour, avec le détail je comprend mieux. je voulais passer directement de 8.175 à 8.1 il manquait une étape. avec PHP_ROUND_HALF_DOWN je pensais que 7 tendait également vers 0, mais du coup c'est juste pour le 5.
    pour le moment j'ai fait un -0.05 et ça a l'air de marcher, doit bien y avoir une solution php, mais je ne la trouve pas. J'avais *10 et utilisé FLOOR, mais ça ne me donnait pas toujours ce que j'attendais.

    Bonne journée.

  4. #4
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 333
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 333
    Points : 15 677
    Points
    15 677
    Par défaut
    Citation Envoyé par Tee shot Voir le message
    ça ne me donnait pas toujours ce que j'attendais.
    et qu'est ce que vous attendiez ? vous ne l'avez pas indiqué dans votre message.

  5. #5
    Expert éminent sénior
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 094
    Points : 16 606
    Points
    16 606
    Par défaut
    Salut

    Il y a une formule simple qui fait le job pour limiter le nombre de décimale(s), sans arrondi ni dans un sens ni dans l'autre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	function LimitDec($chiffre,$NbrDec){
    		return (intval($chiffre * pow(10,$NbrDec)))/pow(10,$NbrDec);
    	}
    ou $chiffre est le chiffre avec décimales et $NbrDec est le nombre de décimale(s) à conserver.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    echo LimitDec(1234.56789,3)// 1234.567
    echo LimitDec(1234.56789,1)// 1234.5

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

Discussions similaires

  1. Comment arrondir avec ruby
    Par boubek dans le forum Ruby
    Réponses: 15
    Dernier message: 01/07/2021, 01h48
  2. Réponses: 2
    Dernier message: 30/03/2015, 11h59
  3. Arrondir avec toujours 2 decimales à la fin
    Par piflechien73 dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 03/05/2013, 18h13
  4. arrondir un chiffre avec Prolog
    Par Seb981 dans le forum Prolog
    Réponses: 2
    Dernier message: 16/05/2007, 23h00
  5. [Source] Comment arrondir un nombre avec une précision variable
    Par OhMonBato dans le forum Vos contributions VB6
    Réponses: 2
    Dernier message: 31/03/2007, 12h44

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