[PHP] Affichage de nombre très petits
Résolu
Sebast076
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
j'ai un petit souci avec l'affichage de nombre tel que 0.00005 avec du php.
voici mon code :
mon souci est qu'avec ce code ma page va m'afficher 1.0E-5 comme résultat.
j'ai essayé de la manière suivante :
la la page m'affiche bien les 5 chiffres après la virgule, mais lorsque le résultat donne un chiffre 'rond' (10 par exemple), cela m'affiche 10.00000.
Il y a t'il un moyen de contourner ce problème pour afficher les nombre entier sans virgule ?
j'ai un petit souci avec l'affichage de nombre tel que 0.00005 avec du php.
voici mon code :
$i = $aDonnees2['nombre']; $i = ( $i * 100 / 3000000000 ); echo $i = round( $i, 5 );
mon souci est qu'avec ce code ma page va m'afficher 1.0E-5 comme résultat.
j'ai essayé de la manière suivante :
echo number_format($total, 5, ',', ' ');
la la page m'affiche bien les 5 chiffres après la virgule, mais lorsque le résultat donne un chiffre 'rond' (10 par exemple), cela m'affiche 10.00000.
Il y a t'il un moyen de contourner ce problème pour afficher les nombre entier sans virgule ?
Configuration: Windows XP Firefox 3.0.10
4 réponses
-
voivi la solution trouvé sur phpfrance et qui fonctionne :
echo number_format( $i, round( abs( log10( $i-floor( $i ) ) ) ) );
-
Yeah pas mal ^^
C'était sur que ça existait déjà ^^
Quand j'essaie
$nombre=10.12345;
echo number_format( $nombre, round( abs( log10( $nombre-floor($nombre ) ) ) ) );
Il m'affiche 10.1 :S
Pour 1000 il affiche 1,000
Donc à revoir :P
j'avais fais ça sinon :<?php function supprimer_zero_droite($string) { $nombre=explode(".",$string); if(count($nombre)==1) $nombre=explode(",",$string); if(count($nombre)==2) { for($i=-1; $i>-strlen($string); $i--) { if(substr($string,$i,1)=="." || substr($string,$i,1)==",") { $string = substr($string,0,strlen($string)+$i); break; } if(substr($string,$i,1)!=0) { $string = substr($string,0,strlen($string)+$i+1); break; } } } return $string; } $nombre = number_format("10", 10, ',', ' '); echo supprimer_zero_droite($nombre); echo "<br/>"; $nombre=10.12345; echo supprimer_zero_droite($nombre); ?>
-
-
Salut !
Je ne sais pas du tout, mais du peux faire une petite fonction qui découpe la chaine et compare les chiffres de droites, si ça vaut 0 tu retiens la partie de droite
<?php function arrondir($string) { //si le séparateur est un point $nombre=explode(".",$string); //si c'est une virgule if(count($nombre)==1) $nombre=explode(",",$string); //vérifie que le découpage à fonctionné et dans ce cas c'est un nombre décimal //compare la partie de droite à 0 if(count($nombre)>1 && $nombre[1]==0) return $nombre[0]; //retourne la partie entière else return $string; //retourne la chaine } $nombre = number_format("10", 5, ',', ' '); echo arrondir($nombre); echo "<br/>"; $nombre=10.12345; echo arrondir($nombre); ?>
Sortie
10
10.12345 -
j'ai essayé ta fonction, mais si mon chiffre a afficher est 0.001 par exemple, elle retourne 1
-
en fait dès que je dépasse les 5 chiffre après la virgule ta fonction ne fonctionne plus ><
-
ma fonction est un exemple ^^
J'ai testé vite fait =)
A toi de bidouillé pour que ça fonctionne et viens poster ta modif ici ^^
Je vais quand même regarder.
En fait ce n'est pas très correct ce que j'ai fais. En effet si j'arrondi un nombre 0.00000001000 ça ne marche pas et les 3 0 de la fin sont inutiles.
Il ne faut bien découper la chaine, mais ensuite il faut lire de droite à gauche et supprimer tous les 0.
-