[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 ?
A voir également:
- [PHP] Affichage de nombre très petits
- Nombre de jours entre deux dates excel - Guide
- Affichage double ecran - Guide
- Easy php - Télécharger - Divers Web & Internet
- Nombre facile - Télécharger - Outils professionnels
- Windows 11 affichage classique - Guide
4 réponses
voivi la solution trouvé sur phpfrance et qui fonctionne :
echo number_format( $i, round( abs( log10( $i-floor( $i ) ) ) ) );
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
Sortie
10
10.12345
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
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.
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.
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 :