Arrondir un nombre

Arrondir un nombre - PHP - Programmation

Marsh Posté le 15-12-2011 à 15:30:45    

Bonjour,
 
j'essaye  d'arrondir un nombre comme:
 
123.54=123
 
123.56=124
 
 
je fait avec des round des floor et des ceil mais ceci ne marche pas
 
quelle piste je dois prendre?
 
Merci

Message cité 2 fois
Message édité par spoque le 15-12-2011 à 15:31:12
Reply

Marsh Posté le 15-12-2011 à 15:30:45   

Reply

Marsh Posté le 15-12-2011 à 16:37:52    

http://www.php.net/manual/fr/function.round.php  exemple n°2, ça ne va pas en ajoutant le 3ème paramètre?


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 15-12-2011 à 16:57:22    

rufo a écrit :

http://www.php.net/manual/fr/function.round.php  exemple n°2, ça ne va pas en ajoutant le 3ème paramètre?


 
Bonjour Rufo,
 
echo round(9.5, 0, PHP_ROUND_HALF_EVEN);
 
celui la? non il m'affiche rien
 
PHP Version 5.1.6
 
apparament c'est pour la 5.3


Message édité par spoque le 15-12-2011 à 17:05:06
Reply

Marsh Posté le 15-12-2011 à 17:51:56    

Ben sinon, tu te codes la fonction à la main si tu peux pas changer ta version de php ;) C'est pas bien dur...


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 16-12-2011 à 12:02:25    

spoque a écrit :

Bonjour,
 
j'essaye  d'arrondir un nombre comme:
 
123.54=123
 
123.56=124
 
Merci


 
Pourquoi 123.54 doit donner 123 et non 124 ?
 
round( 123.45, 0 ) => 123
round( 123.54, 0 ) => 124


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 16-12-2011 à 13:53:45    

Je me suis fait la même réflexion. En maths, l'arrondi se calcule pas comme ça. La seule explication est que son besoin est spécifique à une situation donnée.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 16-12-2011 à 14:15:38    

rufo a écrit :

Je me suis fait la même réflexion.


 
Et tu l'as gardée pour toi  [:cerveau ouch]


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 16-12-2011 à 14:49:34    

J'ai d'abord pensé que son besoin était particulier, vu qu'il dit dans son premier post que les fonctions round, ceil et floor ne l'ont pas aidé...


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 17-12-2011 à 12:11:15    

Non, il a mis que ça ne marchait pas, pas que ça ne correspondait pas à ses besoins. Mais on ne sait pas pourquoi...


---------------
http://www.aideinfo.com/  Whois adresses IP/domaines le plus évolué !!  FAQ Free Mobile
Reply

Marsh Posté le 19-12-2011 à 15:00:10    

aideinfo a écrit :

Non, il a mis que ça ne marchait pas, pas que ça ne correspondait pas à ses besoins. Mais on ne sait pas pourquoi...


 
Bonjour,
 
effectivement avec  
round( 123.45, 0 ) => 123  
round( 123.54, 0 ) => 124  
 
sa marche, mais j'ai une variable exemple $price qui a la valeur 110.57 rien d'autre, et quand je remplace le nombre par ma variable il arrondi à la valeur en dessous.
 
echo round($price, 0);  m'affiche 110
 
je ne comprend pas.

Reply

Marsh Posté le 19-12-2011 à 15:00:10   

Reply

Marsh Posté le 20-12-2011 à 10:58:36    

En fait, la réaction est différente selon que tu utilises un point ou une virgule (selon paramètres régionaux de Windows). Pour ma part, j'ai 110 avec une virgule, 111 avec un point.


---------------
http://www.aideinfo.com/  Whois adresses IP/domaines le plus évolué !!  FAQ Free Mobile
Reply

Marsh Posté le 20-12-2011 à 12:30:41    

spoque a écrit :

Bonjour,
 
j'essaye  d'arrondir un nombre comme:
 
123.54=123
 
123.56=124
 
 
je fait avec des round des floor et des ceil mais ceci ne marche pas
 
quelle piste je dois prendre?
 
Merci


 
C'est pour quelle application :??:
 

aideinfo a écrit :

En fait, la réaction est différente selon que tu utilises un point ou une virgule (selon paramètres régionaux de Windows). Pour ma part, j'ai 110 avec une virgule, 111 avec un point.


 
:jap: la même chose ici sous linux

Code :
  1. <?php
  2.       echo round("110.57", 0);
  3.       echo "<br/>";
  4.       echo round("110,57", 0);
  5. ?>


donne

Citation :


111<br/>110



---------------
"Il a inventé le bougisme : je bouge donc je suis" :sol: - Dupont-Aignan à propos de Son Altesse Sérénissime Sarkal 1er. Merci Handsome Devil et Meriadeck.
Reply

Marsh Posté le 20-12-2011 à 14:00:50    

FranceDenBas a écrit :


 
C'est pour quelle application :??:
 


 

FranceDenBas a écrit :


 
:jap: la même chose ici sous linux

Code :
  1. <?php
  2.       echo round("110.57", 0);
  3.       echo "<br/>";
  4.       echo round("110,57", 0);
  5. ?>


donne

Citation :


111<br/>110




 
 
Bonjour,
 
j'extrais par une boucle un flux XML ma valeur est bien avec un point.
 
donc:123.56=123 chez moi !!!
 
echo round("123.56", 0); = 123 bizzard
 
 

Reply

Marsh Posté le 20-12-2011 à 22:24:31    

La différence provient à mon avis du fait que dans un cas la valeur est considérée comme une chaîne numérique, dans l'autre un nombre décimal.


---------------
http://www.aideinfo.com/  Whois adresses IP/domaines le plus évolué !!  FAQ Free Mobile
Reply

Marsh Posté le 21-12-2011 à 10:20:06    

aideinfo a écrit :

La différence provient à mon avis du fait que dans un cas la valeur est considérée comme une chaîne numérique, dans l'autre un nombre décimal.


S'il sort d'un XML avec SimpleXML c'est même pas une chaîne. Il faut faire une conversion explicite type :
 

Code :
  1. $valeurArrondie = round((double) $xml->maBalise);


---------------
| AMD Ryzen 7 7700X 8C/16T @ 4.5-5.4GHz - 64GB DDR5-6000 30-40-40 1T - AMD Radeon RX 7900 XTX 24GB @ 2680MHz/20Gbps |
Reply

Marsh Posté le 19-03-2012 à 17:52:46    

Super merci MEI pour cette remarque qui va m'éviter de racheter un écran ;).

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed