Ограничение количества цифр в PHP - PullRequest
1 голос
/ 28 августа 2011

Я показываю размер списка файлов в таблице, используя PHP. Я хотел бы показать, насколько они велики в мегабайтах вместо байтов по умолчанию. У меня проблема в том, что я получаю очень длинные десятичные дроби, что нецелесообразно для этой цели.

Вот что у меня есть:

print((filesize("../uploads/" . $dirArray[$index])) * .000000953674316 . " MB");

Правильно преобразует значение, но меняет, например, 71 B на 6.7710876436E-5 MB.

Я думаю, что Е-5 похожа на x10^-5, которая, вероятно, суммируется правильно, но есть ли способ, которым я могу отрезать, до скольких чисел она уменьшается? Если он отображается как «00,00 МБ», это нормально для меня, большинство файлов будет намного больше, чем этот тестовый.

Ответы [ 5 ]

6 голосов
/ 28 августа 2011

Вы можете форматировать числа с помощью функции number_format () .

Редактировать: Страница справочника содержит комментарий пользователя, который вам может понравиться: http://es.php.net/manual/en/function.number-format.php#72969

3 голосов
/ 28 августа 2011

Со старым добрым printf :

printf("%.2f MB",filesize("../uploads/" . $dirArray[$index]) * .000000953674316);

Может быть, потому что немного яснее, что это за намерение:

printf("%.2f MB",filesize("../uploads/" . $dirArray[$index]) / (1024 * 1024));
1 голос
/ 28 августа 2011

number_format() - это хорошо, и не забывайте, что round() может округлять число с любой точностью.

0 голосов
/ 28 августа 2011

Если вам нужны и другие юниты, вы можете использовать эту функцию, которую я написал несколько лет назад:

<?php
function human_filesize($size, $precision = 2)
{
   $a_size = array('B', 'KiB', 'MiB', 'GiB', 'TiB', 'PiB');
   $count  = count($a_size) - 1;
   $i = 0;
   while ($size / 1024 >= 1 && $count >= $i) {
       $size = $size / 1024;
       $i++;
   }
   return round($size, $precision) . ' ' . $a_size[$i];
}

// =========
// USAGE
// =========

// Output: 34.35 MiB
echo human_filesize(filesize('file.zip'));

// Output: 34 MiB
echo human_filesize(filesize('file.zip'), 0);

// Output: 34.35465 MiB
echo human_filesize(filesize('file.zip'), 5);
?>
0 голосов
/ 28 августа 2011

Вот простая приятная функция: Быстрый PHP

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...