arrondissement d'un nombre

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : arrondissement d'un nombre

par riadh » 29 nov. 2006, 16:24

Malheureusement le code m'affiche une valeur erronée pour :
my_round(10.0304,3) //m'affiche 10.031 au lieux de 10.030.
je n'ai pas arrivé a le corrigé.

par riadh » 29 nov. 2006, 12:24

Merci Beaucoup pour le code. Ca devrais resolu le probléme.

par Ajoloca » 27 nov. 2006, 22:25

Bonsoir,

Voici QQ chose qui devrait correspondre
<?php
function my_round($n, $d = 0) {
   $n = $n - 0;
   if ($d === NULL) $d = 2;

   $f = pow(10, $d);
   $n += pow(10, - ($d + 1));
   $n = round($n * $f) / $f;
   $n += pow(10, - ($d + 1));
   $n += '';

   if ($d === 0){
       return substr($n, 0, strpos($n, '.'));
   }
   else{
   	return substr($n, 0, strpos($n, '.') + $d + 1);
	}
}
echo my_round('10.0305',3); // AFFICHE 10.031
?>

par fab » 27 nov. 2006, 19:28

tu peux toi même recoder la fonction ça peut s'averer long mais je pense que ça devrait aller quand même c'est une histoire et substr et de comparaison

par riadh » 27 nov. 2006, 13:19

j'ai testé la fonction sous deux systémes différentes:
- Windows XP avec easyphp 1.7
- Linux avec PHP 4.2.2
ils donnent les mémes résultats
Comment je peux procédes pour corrigé le probléme

par Ryle » 27 nov. 2006, 12:04

Ah oki, j'étais pas parti dans la bonne direction alors, je pensais qu'il s'agissait d'un problème d'affichage de la 3ème décimale, pas de l'arrondi généré par celle ci :)

D'après les commentaires postés sur la doc ce serait effectivement un soucis sur certaines machines...

par riadh » 27 nov. 2006, 11:42

J'ai la version 4.2.2 et
number_format(10.0305,'3','') me donne aussi 10.030
number_format(10.0306,'3','') me donne 10.031

par Ryle » 27 nov. 2006, 11:35

Il devrait :)

Sinon, avant de changer de version de php (chose qu'on ne peux pas toujours faire à son gré), tu peux aussi essayer d'utiliser la fonction number_format() :)

par riadh » 27 nov. 2006, 11:28

Est ce que PHP4 va me donner 10.031;

par DocType » 27 nov. 2006, 11:08

Cela fonctionne parfaitement...depuis PHP4 !
Vérifie bien si ton php est supérieur à la version 3

arrondissement d'un nombre

par riadh » 27 nov. 2006, 10:53

salut;
round(10.0305,3) donne 10.03;
Alors que avec d'autre plateforme donne 10.031;
est ce qu'il y a une méthode pour que php me donne 10.031 tel que les autres plateforme.
Merci.