Arrondir a 0,5 près [Résolu]

spaceyogourt 19 Messages postés lundi 14 mars 2005Date d'inscription 18 juillet 2008 Dernière intervention - 18 juil. 2008 à 13:31 - Dernière réponse : rdepin 1 Messages postés mercredi 12 août 2009Date d'inscription 12 août 2009 Dernière intervention
- 12 août 2009 à 17:06
Bonjour, je met en place un système de notation de produit et j'ai besoin d'arrondir une moyenne à 0,5 près.
exemple:
moyenne = 1,435
moyenne arrondie = 1,5

Si quelqu'un connait un moyen pour le faire ^^
Merci d'avance ++
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
pysco68 681 Messages postés samedi 26 février 2005Date d'inscription 21 août 2014 Dernière intervention - 18 juil. 2008 à 15:45
3
Merci
ah ^^ j'ai compris maintenan

$nombre=1.17;

$arrondi = round($nombre*2)/2;


enfin je crois que ça devais faire ce dont tu a besoin

Developpement Web Yannic GraphiX | Mon CMS yArt et sa démo

Merci pysco68 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

Commenter la réponse de pysco68
rdepin 1 Messages postés mercredi 12 août 2009Date d'inscription 12 août 2009 Dernière intervention - 12 août 2009 à 17:06
1
Merci
J'ai besoin d'arrondir une moyenne à 0,5 près


Bonjour à tous les 2,

Si je peux me permettre, je voudrais vous soumettre un code que je viens de développer en cherchant quelque chose de similaire mais un peu plus précis.
Je m'explique :
Tu as besoin d'arrondir une moyenne à 0,5 près. J'ai fais quelque chose (peut-être pas assez propre pour certains, mais n'hésitez pas à améliorer le code) qui permet d'arrondir une valeur à 0,05 / 0,10 / 0,20 / 0,50 près ou suppérieur.


<?php
// On définie une valeur à arrondir (ex: 11.824)
$val = 11.824;
echo "valeur originale : ".$val."
";

// On arrondie la valeur de manière à obtenir une valeur arrondie à 2 décimales
$valRound = round($val*100)/100;
$valCeil = ceil($val*100)/100;
echo "conversion a 2 décimales pres : ".$valRound."
";
echo "conversion a 2 décimales supp : ".$valCeil."
";

// On récupère les décimales pour les traiter selon qu'il s'agit d'un arrondi à la valeur la plus proche ou suppérieure
list($entier, $decRound) = split('[.]', $valRound);
echo "travail sur les decimales (pres) : ".$decRound."
";
list($entier, $decCeil) = split('[.]', $valCeil);
echo "travail sur les decimales (supp) : ".$decCeil."
";

/**
* fonction d'arrondi
*
* @param $value Il s'agit de la valeur à arrondir
* @param $arrondi Il s'agit du niveau d'arrondi (0,05 / 0,10 / 0,20 / ...) --> Valeur utilisées : 5 / 10 / 20 / 50 (je n'ai pas testé d'autres valeurs)
* @param $roundType Il s'agit du type d'arrondi (arrondi à la valeur la plus proche ou à la valeur suppérieure) - Valeurs possibles : "round" / "ceil"
* @param $precision 1(par défaut) pour les dizaines, 2 pour les centaines, 3 pour millier - En utilisant la valeur "1" c'est good!
* @return unknown_type Retourne la valeur de la décimale une fois arrondie
*/
function decRound($value, $arrondi, $roundType, $precision = 1)
 {
   $p = pow ($arrondi, $precision);
   return $roundType ($value / $p) * $p;
 }


$dec5a = decRound ($decRound, 5, 'round', 1);
$valeur = $entier+($dec5a/100);
echo "Arrondi a 0,05 pres : ".$dec5a." ---> ".$valeur."
";

$dec5b = decRound ($decCeil, 5, 'ceil', 1);
$valeur = $entier+($dec5b/100);
echo "Arrondi a 0,05 Sup : ".$dec5b." ---> ".$valeur."

";

$dec10a = decRound ($decRound, 10, 'round', 1);
$valeur = $entier+($dec10a/100);
echo "Arrondi a 0,10 pres : ".$dec10a." ---> ".$valeur."
";

$dec10b = decRound ($decCeil, 10, 'ceil', 1);
$valeur = $entier+($dec10b/100);
echo "Arrondi a 0,10 Sup : ".$dec10b." ---> ".$valeur."

";

$dec20a = decRound ($decRound, 20, 'round', 1);
$valeur = $entier+($dec20a/100);
echo "Arrondi a 0,20 pres : ".$dec20a." ---> ".$valeur."
";

$dec20b = decRound ($decCeil, 20, 'ceil', 1);
$valeur = $entier+($dec20b/100);
echo "Arrondi a 0,20 Sup : ".$dec20b." ---> ".$valeur."

";

$dec50a = decRound ($decRound, 50, 'round', 1);
$valeur = $entier+($dec50a/100);
echo "Arrondi a 0,50 pres : ".$dec50a." ---> ".$valeur."
";

$dec50b = decRound ($decCeil, 50, 'ceil', 1);
$valeur = $entier+($dec50a/100);
echo "Arrondi a 0,50 Sup : ".$dec50a." ---> ".$valeur."

";
?>


Résultat :
valeur originale : 11.824

conversion a 2 décimales pres : 11.82
conversion a 2 décimales supp : 11.83

travail sur les decimales (pres) : 82
travail sur les decimales (supp) : 83

Arrondi a 0,05 pres : 80 ---> 11.8
Arrondi a 0,05 Sup : 85 ---> 11.85

Arrondi a 0,10 pres : 80 ---> 11.8
Arrondi a 0,10 Sup : 90 ---> 11.9

Arrondi a 0,20 pres : 80 ---> 11.8
Arrondi a 0,20 Sup : 100 ---> 12

Arrondi a 0,50 pres : 100 ---> 12
Arrondi a 0,50 Sup : 100 ---> 12

J'espère que mon post n'est pas trop long et qu'il pourra servir à bon nombre qui comme moi cherchait une plus grande précision dans les arrondis.
Merci.

a+
Romain


Un nain a beau se tenir sur une montagne, il n'en est pas plus grand pour celà
(Sénèque)
Commenter la réponse de rdepin
pysco68 681 Messages postés samedi 26 février 2005Date d'inscription 21 août 2014 Dernière intervention - 18 juil. 2008 à 14:58
0
Merci
Bonjour bonjour,

....la documantation de php t'aurait évité de poser la question...

-> http://fr.php.net/manual/fr/function.round.php <-

echo round(1.435, 1);  // 1.5


Bonne journée...

Developpement Web Yannic GraphiX | Mon CMS yArt et sa démo
Commenter la réponse de pysco68
spaceyogourt 19 Messages postés lundi 14 mars 2005Date d'inscription 18 juillet 2008 Dernière intervention - 18 juil. 2008 à 15:35
0
Merci
Je me suis déjà renseigner sur cette fonction mais le problème c'est que je cherche à ce que
moyenne = 1,17
moyenne arrondie = 1
et
moyenne = 1,278
moyenne arrondie = 1,5
Commenter la réponse de spaceyogourt
spaceyogourt 19 Messages postés lundi 14 mars 2005Date d'inscription 18 juillet 2008 Dernière intervention - 18 juil. 2008 à 16:04
0
Merci
c'est exactement ce qu'il me fallait^^
j'ai vraiment plus de tête lol c'était tout bête.

Merci ++
Commenter la réponse de spaceyogourt

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.