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


arrondir a 0.5 près - max - 30-12-2006

slt tt le monde! ca sera ma dernière question en 2007!
j'ai un array (meme plusieurs) avec la puissance le debit et le rendement d'une turbine
j'ai un formulaire simple dans lequel on peut rentrer la hauteur de chute puis ca donne a puissance le debit et le rendement pour cette hauteur
ca c'est fait mais on ne peut donner la hauteur que de 0.5 en 0.5
$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");
si un rentre par exemple 3.2 ca va buger
donc je vous demande comment faire pour arondir le chifre rentré dans le formulaire a 0.5 près?
je peut utiliser float pour arondir mais ca arondi en retirant toute les virgules, ca n'arondi pas a 0.5 près mais a 1
qu'estceque je pourais utiliser?
merci et bonne anné d'avance!


RE: arrondir a 0.5 près - Loetheri - 30-12-2006

C'est simple
3.2 est un float. Si tu le passes en Integer, cela te donne 3.
Tu soustrais 3 à 3.2. Cela te donne 0.2. Tu regardes si 0.2 est plus proche de 0.0, 0.5 ou de 1.0. Puis, en fonction de cela, tu ajoutes soit 0.0 soit 0.5 soit 1.0.

Voili, voilà


RE: arrondir a 0.5 près - Michu - 30-12-2006

Pour arrondir au dessus c'est la fonction round()

prototype : float round ( float val [, int precision] )
donc tu met ta valeur a arrondir et la précision

ex : (doc php)
Code :
<?php
echo round(3.4);         // 3
echo round(3.5);         // 4
echo round(3.6);         // 4
echo round(3.6, 0);      // 4
echo round(1.95583, 2);  // 1.96
echo round(1241757, -3); // 1242000
echo round(5.045, 2);    // 5.05
echo round(5.055, 2);    // 5.06
?>

et pour info : pour arrondir à l'inférieur c'est la fonction floor() :

prototype : float floor ( float value )

ex :
Code :
<?php
echo floor(4.3);   // 4
echo floor(9.999); // 9
?>



RE: arrondir a 0.5 près - max - 30-12-2006

oui mais tout ca c'est pour faire des troncatures ou des arondi non?
moi ca que je veu c'est que les valeurs soient arondi a 0.5 près
qu'elles soient toujours dans ces valeurs: "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 - gtsoul - 30-12-2006

rectification :
ceil() arrondit par exces
flloor() par défaut
et round() par approximation

pour arrondir à 0.5 prés, tu peux faire la moitié du floor du double
$net = (floor(2*$brut))/2;


RE: arrondir a 0.5 près - Loetheri - 30-12-2006

la solution de gtsoul est la plus simple.


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

dsl j'étai pas là...
j'ai testé, ca marche sauf... quand je met une valeur qui se termine par ,5
c'est chiant mais c'est pas loin du but ^^
je met le script php pour voir vos avis

Code PHP :
<?php

$hauteur_brut
=$_POST['hauteur_brut'];
$hauteur=(round(2*$hauteur_brut))/2;
if (isset(
$_POST['hauteur_brut']))
{
if(
$hauteur_brut =<3)
{ echo
"la hauteur de chute est trop faible";}

elseif(
$hauteur_brut => 11)
{ echo
"la hauteur de chute ne peut pas etre si importante";}

else
{
$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");

$rendement = array("0,5","0,52","0,54","0,56","0,57","0,58","0,585","0,59","0,6","0,62","0,67","0,7","0,73","0,74","0,73","0,72","0,71");

$puissance = array("2" ,"2,9" ,"3,6" ,"4,5" ,"5,5" ,"6,8" ,"7,8" ,"8,8" ,"9,5" ,"9,6" ,"9,8" ,"9,9" ,"10" ,"10" ,"10" ,"10" ,"10");

$debit = array("135" ,"162" ,"169" ,"182" ,"195" ,"217" ,"226" ,"233" ,"230" ,"210" ,"186" ,"170" ,"155" ,"145" ,"140" ,"134" ,"131");


$val_brut = $_POST['hauteur_brut'];
$val=(floor(2*$val_brut))/2;

$selec = array_keys($hauteur, "$val");

foreach (
$selec as $select)
{
$select;
}

echo
"<p><h4><ins>Pour une hauteur de chute de ".$hauteur."mètres : </ins></h4>";
echo
"La turbine kaplan a un rendement de : ".$rendement[$select]."<br />";
echo
"Une puissance de: ".$puissance[$select]." MW<br />";
echo
"Et un débit de: ".$debit[$select]." m3/s</p>";
}
}

?>



RE: arrondir a 0.5 près - Antyoz - 02-01-2007

Parse error !!


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

hein? pk tu dit ca?
ca afiche pas d'erreur


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

Utilise floor() ça marchera mieux Wink

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