2009-09-24 5 views

Répondre

21

2.1E-5 est le même nombre que 0.000021. C'est comme ça que les nombres sont imprimés en dessous de 0.001. Utilisez printf() si vous le souhaitez dans un format particulier.

Modifier Si vous n'êtes pas familier avec la syntaxe 2.1E-5, vous devez savoir qu'il est un raccourci pour 2,1 × 10 -5 . C'est ainsi que la plupart des langages de programmation représentent des nombres en notation scientifique.

5

Utilisez number_format ou sprintf si vous voulez voir le numéro que vous attendez.

echo sprintf('%f', $var); 
echo number_format($var, 6); 
6

En général, un numéro est un numéro, pas une chaîne, et cela signifie que tout langage de programmation traite un numéro comme numéro. Ainsi, le nombre en lui-même n'implique aucun format spécifique (comme utiliser .000021 au lieu de 2.1e-5). Ce n'est pas différent d'afficher un nombre avec des zéros (comme 0.000021) ou d'aligner des listes de nombres. C'est un problème général que vous trouverez dans n'importe quel langage de programmation: si vous voulez un format spécifique, vous devez le spécifier en utilisant les fonctions de format de votre langage de programmation.

Sauf si vous spécifiez le nombre comme chaîne et le convertissez en un nombre réel si nécessaire, bien sûr. Certaines langues peuvent le faire implicitement.

-1
<?php 
$var = .000021; 
echo $var; // 2.1E-5 
echo "\n"; 
$var = '.000021'; 
echo $var; // .000021 

Définir votre numéro en tant que chaîne pour éviter l'auto-coulée lorsqu'ils sont utilisés dans le contexte de la chaîne (par exemple l'écho)

+1

Il est évident que seule une bonne solution si le numéro que vous travaillez avec est spec'd dans votre code source (par opposition à calculer à l'exécution). .. ce qui peut ou peut ne pas être le cas dans votre situation. –

2

Pour afficher un nombre jusqu'à 8 places décimales, sans zéros supplémentaires à droite (comme number_format ne, qui peut être gênant), utilisez ceci:

echo rtrim(rtrim(sprintf('%.8F', $var), '0'), ".");

Questions connexes