Retirer les décimales inutiles de number_format avec PHP
Publié le 04/04/2022 • Actualisé le 04/04/2022
Dans ce bout de code, nous voyons comment retirer les décimales inutiles de number_format avec PHP. Cette astuce n'est utile que si vous utilisez des paramètres localisés pour les séparateurs de décimales et des milliers. Si vous n'avez pas besoin de cela, forcer en tant que chaîne la variable de type flottant fait le travail comme montré dans la deuxième boucle foreach
.
<?php
declare(strict_types=1);
namespace App\Controller\Snippet;
/**
* J'utilise un trait PHP afin d'isoler chaque snippet dans un fichier.
* Ce code doit être apellé d'un contrôleur Symfony étendant AbstractController (depuis Symfony 4.2)
* ou Symfony\Bundle\FrameworkBundle\Controller\Controller (Symfony <= 4.1).
* Les services sont injectés dans le constructeur du contrôleur principal.
*/
trait Snippet196Trait
{
public function snippet196(): void
{
$floats = [
10,
10.00,
10.01,
10.10,
10.99,
10.01010,
11111.001001000,
];
var_dump($floats);
echo PHP_EOL;
foreach ($floats as $idx => $float) {
echo 'n°'.$idx.': '.number_format($float, 2).' -> '.$this->numberFormatRemoveExtra($float).PHP_EOL;
}
echo PHP_EOL.'-- With string cast '.PHP_EOL;
foreach ($floats as $idx => $float) {
echo 'n°'.$idx.': '.$float.PHP_EOL; // cast is automatic (if possbile) when concatening two variables
}
// That's it! 😁
}
private function numberFormatRemoveExtra(float $number): string
{
$float = explode('.', (string) $number);
$right = $float[1] ?? '';
return number_format($number, \strlen($right), ',', '.');
}
}
Exécuter le snippet Plus sur Stackoverflow Lire la doc Snippet aléatoire