Во всех ответах на вопрос используется 1 килобайт = 1024 байта, что неверно!( 1 кибибайт = 1024 байта )
, поскольку вопрос требует преобразования размеров файлов, следует использовать это 1 килобайт = 1000 байтов (см. https://wiki.ubuntu.com/UnitsPolicy)
function format_bytes($bytes, $precision = 2) {
$units = array('B', 'KB', 'MB', 'GB');
$bytes = max($bytes, 0);
$pow = floor(($bytes ? log($bytes) : 0) / log(1000));
$pow = min($pow, count($units) - 1);
$bytes /= pow(1000, $pow);
return round($bytes, $precision) . ' ' . $units[$pow];
}