Removing useless decimal of number_format with PHP
Published on 2022-04-04 • Modified on 2022-04-04
In this snippet, we see how to remove useless decimal of number_format with PHP. This trick is only helpful if you want to have localized decimal and thousand separators. If you don't need this, a string cast on the float variable does the job, as shown in the second foreach
loop.
<?php
declare(strict_types=1);
namespace App\Controller\Snippet;
/**
* I am using a PHP trait to isolate each snippet in a file.
* This code should be called from a Symfony controller extending AbstractController (as of Symfony 4.2)
* or Symfony\Bundle\FrameworkBundle\Controller\Controller (Symfony <= 4.1).
* Services are injected in the main controller constructor.
*/
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), ',', '.');
}
}
Run this snippet More on Stackoverflow Read the doc Random snippet