2010-08-29 6 views
2

i ont une valeur que je calcule entre 0 -100, il est généralement un nombre flottant comme 5,87876, donc j'utiliser number_format comme:problème d'affichage en pourcentage

$format_number = number_format($number, 2, '.', ''); 

le problème est, même le nombre de calculate est entier comme: 100

son spectacle 100.00

mais je veux afficher comme: 100

Quelle est la manière élégante de réaliser ceci?

(je veux dire sans autre si ..)

+0

Je ne pense pas qu'il y ait une façon sans vérifier le 'number' de $, non. –

Répondre

4

Ceci est le chemin le plus court Je sais.

$digits =  (is_numeric($number) && intval($number) == $number ? 0 : 2); 
$format_number = number_format($number, $digits, '.', ''); 

Le is_numeric et intval trick est tiré de this SO question

+1

Vous avez mal copié l'astuce - j'ai modifié pour le réparer. – Timwi

+0

[NP ☺] (http://meta.stackexchange.com/questions/700/) – Timwi

2

si vous essayez d'avoir une précision de deux décimales après le point, mais supprimer la .00 sur les entiers? J'utilise sprintf:

$numbers = Array(3.141, 5.87876, 10.9999, 100); 


foreach($numbers as $n) { 
    $string = sprintf("%6.2f\n", $n); 
    $string = str_replace(".00", " ", $string); 
    echo $string; 
} 

La sortie est

3.14 
    5.88 
11 
100 
Questions connexes