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 un nombre


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 116
    Points : 62
    Points
    62
    Par défaut Arrondir un nombre
    Bonjour,

    Je suis confronté à un soucis. Je récupère une valeur en chiffre qui doit me servir en déduire une échelle minimum.
    A cette valeur, je dois l'arrondir au 0.5 inférieur

    Exemple : 2.22 doit me donner au final 2
    ou 1.94 doit me donner 1.50

    Comment faire cela ?

    Merci de votre aide c'est assez urgent ^^

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Je ne vois pas d'autres facon que de faire l'analyse manuellement : decouper au point et regarder si > ou < à 5

  3. #3
    Membre averti Avatar de sayari.dev
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2010
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2010
    Messages : 142
    Points : 300
    Points
    300
    Par défaut
    Ou encore

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $value = round($x + 0.5) > round($x)? round($x + 0.5) -  0.5 : round($x);

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    97
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 97
    Points : 119
    Points
    119
    Par défaut
    Citation Envoyé par sayari.dev Voir le message
    Ou encore
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $value = round($x + 0.5) > round($x)? round($x + 0.5) -  0.5 : round($x);
    héhé
    élégant, mais faut.
    Le but est l'arrondissement au demi inférieur et non supérieur.

    Moi je propose :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function myround($arg) {
    	$inf = floor($arg);
    	return $result = ($arg-$inf>0.5)?$inf+0.5:$inf;
    }

  5. #5
    Membre chevronné Avatar de nosferapti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 157
    Points : 1 895
    Points
    1 895
    Par défaut
    la fonction "floor" peut faire ça directement sans test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function arrondi($nombre)
    {
        return floor($nombre / 0.5) * 0.5;
    }
     
    echo arrondi(2.22) . '<br/>'; // affiche 2
    echo arrondi(1.94) . '<br/>'; // affiche 1.5
    echo arrondi(1)    . '<br/>'; // affiche 1
    echo arrondi(1.05) . '<br/>'; // affiche 1

  6. #6
    Membre averti
    Homme Profil pro
    Consultant PLM
    Inscrit en
    Août 2007
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Consultant PLM

    Informations forums :
    Inscription : Août 2007
    Messages : 203
    Points : 304
    Points
    304
    Par défaut
    Hop, une fonction générique :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    function floor_precise($arg, $precision = 1.0) {
       return floor($arg / $precision) * $precision;
    }
    Maintenant, ça permet de faire des arrondis par rapport à 0.5, mais aussi tous les x voulus (0.2, 0.1, ...) :
    floor_precise(2.22, 0.5) = 2
    floor_precise(1.94, 0.5) = 1.5
    floor_precise(2.22, 0.2) = 2.2
    floor_precise(1.94, 0.2) = 1.8

  7. #7
    Membre averti Avatar de sayari.dev
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2010
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2010
    Messages : 142
    Points : 300
    Points
    300
    Par défaut
    Citation:
    Envoyé par sayari.dev Voir le message
    Ou encore
    Code :


    $value = round($x + 0.5) > round($x)? round($x + 0.5) - 0.5 : round($x);


    héhé
    élégant, mais faut.
    Le but est l'arrondissement au demi inférieur et non supérieur.
    Ooops, un trou de mémoire est la cause de cette faute .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $value = floor($x + 0.5) > floor($x)? floor($x + 0.5) -  0.5 : floor($x);

Discussions similaires

  1. arrondire un nombre
    Par Damarus dans le forum Langage
    Réponses: 5
    Dernier message: 22/11/2005, 17h30
  2. Arrondir un nombre comme j'en ai envie !
    Par beletteroi dans le forum Access
    Réponses: 6
    Dernier message: 03/11/2005, 12h42
  3. arrondir un nombre découlant d'une soustraction de date
    Par bertrand_declerck dans le forum Langage
    Réponses: 2
    Dernier message: 17/08/2005, 13h51
  4. arrondir un nombre à 2 chiffres après la virgule
    Par El Saigneur dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 01/02/2005, 08h36
  5. [langage] arrondir un nombre
    Par GMI3 dans le forum Langage
    Réponses: 4
    Dernier message: 24/06/2004, 11h18

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