arrondissement d'un nombre

riadh
Invité n'ayant pas de compte PHPfrance

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.

Mammouth du PHP | 1776 Messages

27 nov. 2006, 11:08

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

riadh
Invité n'ayant pas de compte PHPfrance

27 nov. 2006, 11:28

Est ce que PHP4 va me donner 10.031;

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

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() :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

riadh
Invité n'ayant pas de compte PHPfrance

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

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

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...
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

riadh
Invité n'ayant pas de compte PHPfrance

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

ViPHP
fab
ViPHP | 2657 Messages

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
Seul l'intelligent a le pouvoir de se trouver con
try { work(); } catch(FlemmeExeption $e) { sleep(84600); }

ViPHP
ViPHP | 1961 Messages

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
?>
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

riadh
Invité n'ayant pas de compte PHPfrance

29 nov. 2006, 12:24

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

riadh
Invité n'ayant pas de compte PHPfrance

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é.