Page 1 sur 1

Probleme sur un arrondi

Posté : 21 nov. 2006, 18:51
par castelli
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

Posté : 21 nov. 2006, 18:56
par mere-teresa
et si tu le multiplie d'abord pour avoir un entier ?

Posté : 21 nov. 2006, 18:57
par zeus
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)

Posté : 21 nov. 2006, 18:58
par Ajoloca
Bonjour,

En gardent le . dans l'espression round()
<?php echo str_replace('.', ',', round($reduction2, 2)); ?>

Posté : 21 nov. 2006, 19:12
par castelli
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

Posté : 21 nov. 2006, 19:14
par DocType
mere theressa
Elle va être enchantée :lol:

Posté : 21 nov. 2006, 19:16
par Cyrano
C'est magique la doc, on trouve par exemple : number_format() ;)

Posté : 21 nov. 2006, 19:16
par castelli
Elle va être enchantée :lol:
Lol j'immagine bien :lol:

Posté : 21 nov. 2006, 19:17
par zeus
regarde du côté de la fonction ceil() alors ;)

PS : pas de H à mere-teresa :-*

Posté : 21 nov. 2006, 19:20
par DocType
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

Posté : 21 nov. 2006, 19:40
par castelli
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 :) )

Posté : 21 nov. 2006, 19:46
par Ajoloca
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

Posté : 22 nov. 2006, 11:18
par castelli
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

Posté : 22 nov. 2006, 12:59
par castelli
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); ?>

Posté : 22 nov. 2006, 13:55
par mere-teresa
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