JeuWeb - Crée ton jeu par navigateur

Version complète : arrondir a 0.5 près
Vous consultez actuellement la version basse qualité d’un document. Voir la version complète avec le bon formatage.
Pages : 1 2
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!
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à
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
?>
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"
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;
la solution de gtsoul est la plus simple.
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>";
}
}

?>
Parse error !!
hein? pk tu dit ca?
ca afiche pas d'erreur
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
Pages : 1 2