03-01-2007, 11:18 AM
Voici ma petite contribution
Code PHP :
<?php
function specialRound($i)
{
$a=$i*10;
$m=intval(floor($a/10));
$r=intval($a%10);
if($r<3) $r=0;
else if($r>7) $r=10;
else $r=5;
return ((($m*10)+$r)/10);
}
echo "3=".specialRound(3)."<br>";
echo "3.2=".specialRound(3.2)."<br>";
echo "3.4=".specialRound(3.4)."<br>";
echo "3.6=".specialRound(3.6)."<br>";
echo "3.8=".specialRound(3.8)."<br>";
echo "4=".specialRound(4)."<br>";
?>
Le résultat donne :
Citation :3=3
3.2=3
3.4=3.5
3.6=3.5
3.8=4
4=4
En gros, je multiplie la valeur par 10 puis je récupère le résultat entier de la division par dix ainsi que le modulo par 10.
Je regarde le résultat du modulo pour savoir si j'arrondit à 0.0, 0.5 ou 1.
Ensuite, je recontrsuit la valeur initiale avec l'arrondit choisi