194 votes

Supprimer les zéros inutiles des décimales en PHP

J'essaie de trouver un moyen rapide de supprimer zero decimals à partir de valeurs numériques comme ceci :

echo cleanNumber('125.00');
// 125

echo cleanNumber('966.70');
// 966.7

echo cleanNumber(844.011);
// 844.011

Existe-t-il un moyen optimisé de le faire ?

409voto

lafor Points 3876

$num + 0 fait l'affaire.

echo 125.00 + 0; // 125
echo '125.00' + 0; // 125
echo 966.70 + 0; // 966.7

En interne, c'est équivalent à une conversion en flottant avec (float)$num o floatval($num) mais je trouve ça plus simple.

130voto

Omar Jackman Points 6632

Vous pourriez simplement utiliser le floatval fonction

echo floatval('125.00');
// 125

echo floatval('966.70');
// 966.7

echo floatval('844.011');
// 844.011

31voto

Mark Points 49079

C'est ce que j'utilise :

function TrimTrailingZeroes($nbr) {
    return strpos($nbr,'.')!==false ? rtrim(rtrim($nbr,'0'),'.') : $nbr;
}

N.B. Cela suppose . est le séparateur décimal. Il a l'avantage de fonctionner sur des nombres arbitrairement grands (ou petits) puisqu'il n'y a pas d'encodage des flottants. Il ne transforme pas non plus les nombres en notation scientifique (par exemple 1.0E-17).

25voto

Hemerson Varela Points 1890

Si vous voulez supprimer les chiffres zéro juste avant de les afficher sur la page ou le modèle.

Vous pouvez utiliser le sprintf() fonction

sprintf('%g','125.00');
//125

sprintf('%g','966.70');
//966.7

sprintf('%g',844.011);
//844.011

20voto

Il suffit d'ajouter + à votre variable chaîne de caractères provoquera le typecast à (float) et supprime les zéros :

var_dump(+'125.00');     // double(125)
var_dump(+'966.70');     // double(966.7)
var_dump(+'844.011');    // double(844.011)
var_dump(+'844.011asdf');// double(844.011)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X