Probleme sur un arrondi

Eléphant du PHP | 450 Messages

21 nov. 2006, 18:51

Bonjour (pour la troisieme fois de la journée :lol: )

j'ai un probleme au niveau des arrondis que je fais

Code : Tout sélectionner

<?php echo round($reduction2,2); ?>
sachant que la variable reduction est egale a 45,4848 , j'aimerais que mon arrondi me donne 45,49 hors en ce moment il me donne juste 45 (pourtant j'ai regarder plusieur tutoriaux sur le sujet et il devrais me donner le bon resultat (si j'ai pas fais d'erreur ).

Donc je pense que la faute vient du fait qu'il y ait une virgule dans la variable mais j'en ai besoin lors de l'affichage de la variable donc je ne sait pas trop comment faire

Vous auriez une idée pour m'aidez? (je seche )

Merci encore
Alone in the dark , I smile :D

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

21 nov. 2006, 18:56

et si tu le multiplie d'abord pour avoir un entier ?
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

21 nov. 2006, 18:57

Lorsque tu écrit
round($reduction2,2)
quel est le nom de la variable ?

PS : D'une manière générale, il est bon d'adopter les mêmes reflexes d'espacement que pour la langue francaise : un espace après la virgule
round($reduction2, 2)
A condition que ta variable soit $reduction2 et pas $reduction2,2 (ce qui est faux)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

ViPHP
ViPHP | 1961 Messages

21 nov. 2006, 18:58

Bonjour,

En gardent le . dans l'espression round()
<?php echo str_replace('.', ',', round($reduction2, 2)); ?>
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Eléphant du PHP | 450 Messages

21 nov. 2006, 19:12

Euh , alors la variable est $reduction2 (j'ai donc mis un espace aprés la virgule )
<?php echo round($prix_total2, 2); ?>
c'est mieu comme sa zeus ? :p

sinon mere-teresa j'ai pas compris ce que tu essaillais de me dire

ajoloca
j'ai tester ce que tu ma mis
<?php echo str_replace('.', ',', round($reduction2, 2)); ?>
et sa marche bien
par exemple 33.5984 deviendra 33.60

par contre 49.4848 devient 49.48

Hors il faudrait arrondir toujours au superieur et aussi si possible si j'ai un chiffre comme 27.2 qu'il devienne 27.20

voila voila
Modifié en dernier par castelli le 21 nov. 2006, 19:40, modifié 1 fois.
Alone in the dark , I smile :D

Mammouth du PHP | 1776 Messages

21 nov. 2006, 19:14

mere theressa
Elle va être enchantée :lol:

Mammouth du PHP | 19672 Messages

21 nov. 2006, 19:16

C'est magique la doc, on trouve par exemple : number_format() ;)
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 450 Messages

21 nov. 2006, 19:16

Elle va être enchantée :lol:
Lol j'immagine bien :lol:
Alone in the dark , I smile :D

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

21 nov. 2006, 19:17

regarde du côté de la fonction ceil() alors ;)

PS : pas de H à mere-teresa :-*
Modifié en dernier par zeus le 21 nov. 2006, 19:26, modifié 1 fois.
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Mammouth du PHP | 1776 Messages

21 nov. 2006, 19:20

Elle va être enchantée :lol:
Lol j'immagine bien :lol:
Déjà quand je mets un h en trop elle me vole dans les poils (je suis un hamster ^^), alors là, comment va t-elle régir en se rendant compte que son pseudo s'approche de plus en plus de mère Thalassa ^^

Note: Ce serait légitime, vu qu'elle fait partie de ces fossiles sévissant sur le forum :lol:
Je suis déjà sorti

Eléphant du PHP | 450 Messages

21 nov. 2006, 19:40

Mdr :p voila j'ai edité ^^ veut pas me faire tapper

héhéhé

en cherchant sur le net j'ai trouvé un truc pas mal :

<?php
 
 function round_up ($value, $places=0) {
  if ($places < 0) { $places = 0; }
  $mult = pow(10, $places);
  return ceil($value * $mult) / $mult;
 }
 echo round_up (56.77001, 2); // displays 56.78
 echo round_up (-0.453001, 4); // displays -0.453
sa me donnerai exactement se que je desirerai faire
mais sa fonctionne pas chez moi

en faite je voux explique (c trés trés bete comme probleme ) je sait pas quoi mettre a la place des variable values , places et mult

lol vous pourriez m'eclairer (aprés je vous enmbete plus promis :) )
Alone in the dark , I smile :D

ViPHP
ViPHP | 1961 Messages

21 nov. 2006, 19:46

Re,

Les deux seules que tu dois utiliser sont $value et $places, $mult est un calcule intermédiaire.

Donc
$value == la valeur, pour toi $prix_total2
$places == chiffres après la virgule pour toi 2
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Eléphant du PHP | 450 Messages

22 nov. 2006, 11:18

Bon bah j'ai essaillez de me debrouillez et j'ai fais comme sa
$value=$prix_total;
$place =2;
function round_up ($value, $places=0) { 
  if ($places < 0) { $places = 0; } 
  $mult = pow(10, $places); 
  return ceil($value * $mult) / $mult; 
 } 
 echo round_up (56.77001, 2); // displays 56.78 
 echo round_up (-0.453001, 4); // displays -0.453 
 echo round_up($prix_total2, 2);
Forcement comme vous pouvez l'immaginez sa ne peux pas fonctionner .
Le probleme vient du fait que je ne sait pas comment bien changer la fonction :/
j'immagine que je peu pas mettre $places=0 si la variable place =2
: /

quand j'execute ce code , l'erreur qui met retourner est :

Cannot redeclare round_up() (previously declared in /data/htdocs/Webdav_depot/enscr/intranet_enscr/intranet_enscr_personnel/intranet_lsab/v3/commande.php:114) in /data/htdocs/Webdav_depot/enscr/intranet_enscr/intranet_enscr_personnel/intranet_lsab/v3/commande.php on line 114


la ligne ou est ecrite la fonction est justement la 114..

Donc je voulais savoir si quelqun pouvait m'aider (j'ai passer deux heure dessus je sature vraiment )

Je vous remercie encore
Alone in the dark , I smile :D

Eléphant du PHP | 450 Messages

22 nov. 2006, 12:59

Pour l'erreur :

Cannot redeclare round_up() (previously declared in /data/htdocs/Webdav_depot/enscr/intranet_enscr/intranet_enscr_personnel/intranet_lsab/v3/commande.php:114) in /data/htdocs/Webdav_depot/enscr/intranet_enscr/intranet_enscr_personnel/intranet_lsab/v3/commande.php on line 114

je l'ai supprimer en mettant la fonction dans un fichier externe

que j'appelle comme sa :
  include_once("roundup.php"); 
le code de cette fonction est :
<?php
function round_up ($value, $places=0) { 
  if ($places < 0) { $places = 0; } 
  $mult = pow(10, $places); 
  return ceil($value * $mult) / $mult; 
 } 
 ?>
et l'echo que je fais :
<?php echo round_up($prix_total2, 2); ?>
Alone in the dark , I smile :D

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

22 nov. 2006, 13:55

Note: Ce serait légitime, vu qu'elle fait partie de ces fossiles sévissant sur le forum :lol:
Je suis déjà sorti
Ben je te dis ZUT
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.