JeuWeb - Crée ton jeu par navigateur
arrondir a 0.5 près - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : arrondir a 0.5 près (/showthread.php?tid=584)

Pages : 1 2


RE: arrondir a 0.5 près - barst - 03-01-2007

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


RE: arrondir a 0.5 près - max - 03-01-2007




RE: arrondir a 0.5 près - Roworll - 03-01-2007

Ton tableau $hauteur doit contenir des . comme séparateur de décimal au lieu des ,
Pour une valeur de "4.7", le calcul renvoie "4.5" alors que le tableau que tu donnes en exemple contient "4,5" comme valeur de référence... Cela ne correspond pas donc bug.

Le format correct de $hauteur est
Code PHP :
<?php 
$hauteur
= array("3","3.5","4","4.5","5","5.5","6","6.5","7","7.5","8","8.5","9","9.5","10","10.5","11");



RE: arrondir a 0.5 près - Plume - 03-01-2007

Erf en effet, j'avais pas calculé Smile
Du coup, ça s'applique à tous les autres tableaux contenant des valeurs numériques décimales. De plus, je suis assez surpris que tu es fait cette erreur quand on voit ça :
Code PHP :
<?php 
$hauteur
= array("3","3.5","4","4,5","5","5,5","6","6,5","7","7,5","8","8,5","9","9,5","10","10,5","11");
Tu semblais avoir bien commencé pour le premier décimal ^^

Et sinon pour ma petite demande de précision ?


RE: arrondir a 0.5 près - max - 03-01-2007

ha wééé merde! lol
scusez moi j'y ai vraiment pas pensé... jsui encore un noob a ske j'voi ^^
j'espère que je la referai plu celle la!
c'est bon barst ca marche comme ca, ta solution me semblai trop compliqué et si on me demande d'expliquer ton code je saurais pas ( c'est pour mon tpe) paske l'utilisation des fonctions c'est pas mon truc...
ba voila c'eest bon encore merci ^^

et DämEn c'est quoi ta "petite demande de précision"?


RE: arrondir a 0.5 près - barst - 03-01-2007

Voici une explication plus détaillé.

Tu multiplies la valeur que tu veux tester par 10.
Donc ton 3.2 devient 32.
Ca te permet de travailler avec des valeurs entières.
Tu divises par 10 et tu prend la partie entière ca te donne 3.
Le fait de prendre le modulo 10, et donnes la dernière partie de ton chiffre ici 2.

Après tu compares, si la dernière partie est inférieure à 3 alors j'arrondit à 0.
Si la dernière partie est supérieure à 7 alors j'arrondit à 10, sinon je prends 5.

Enfin tu reconsitute ton chiffre :
(3x10) = 30
30 + la valeur de l'arrondi (0,5 ou 10) = 30 (pour la valeur de départ 32)
et tu redivises par 10.
30/10 = 3


RE: arrondir a 0.5 près - max - 03-01-2007

ouais mrc j'ai compri mtn ^^
mais bon pourquoi faire compliqué quand on peut faire simple hein?


RE: arrondir a 0.5 près - Plume - 03-01-2007

DämEn a écrit :P'tite note aussi, je suis pas sûr parce que ça semble marcher selon toi, mais es-tu sûr de la syntaxe suivante  :
Code PHP :
<?php 
$hauteur_brut
=<3

En fait je pense plutôt à :
Code PHP :
<?php 
$hauteur_brut
<= 3