Нет времени объяснять:
<?php
class Formatter
{
public function scaleNumber($number)
{
$base = 1000;
$scale = 0;
$scales = array('', 'K', 'M', 'G', 'P');
$scaledNumber = $number;
while (($scaledNumber / $base) > 1
&& $scale < sizeof($scales) - 1
) {
$scaledNumber /= $base;
$scale++;
}
if (!$scale) {
return $number;
}
$formattedNumber = number_format($scaledNumber, 1, '.', '');
return trim($formattedNumber, '0.') . $scales[$scale];
}
}
$formatter = new Formatter;
$numbers = array(
10,
33333,
54321 * 1000,
76231 * 1000 * 1000,
82345 * 1000 * 1000 * 1000, // HI THAR 64 BIT
82345 * 1000 * 1000 * 1000 * 1000 * 1000,
);
foreach ($numbers as $number) {
echo $formatter->scaleNumber($number), PHP_EOL;
}