Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Матем. функция в PHP, как уменьшить разряд 
:(
    Опции темы
ldobr
  Дата 19.12.2006, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 19.12.2006

Репутация: нет
Всего: нет



Здраствуйте. 

В PHP не новичок, но вот случилось следующее.

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

Пример:

Файл весит 8 372 451 байт, то есть 8 372 килобайта, и соотвецтвенно 8,4 Мегобайта (Обратите внимание, что оставлена одна цифра после запятой).

PHP мне выдает вес файла в байтах, а мне надо, чтобы было в мегобайтах, да еще и с одной цифрой после запятой.

Да! И еще ... если файл будет весить меньше одного мегобайта, то вывести так 0,2 Mb.

--------------------------------------------------------------------
В моих книгах, подобное не описано. Я думаю, что это можно сделать с помощью математических манипуляций, но сообразить не могу.
Заранее спаибо.

PM MAIL   Вверх
szz
Дата 19.12.2006, 17:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1289
Регистрация: 31.5.2005
Где: Moscow, Jerusalem

Репутация: 8
Всего: 33



ну вот.. это ж просто. Примерно так - не проверял, так что если есть ошибки - подправь
Код

function __approx_round($v){
    return round($v*10)/10;
}
function friendly_file_size($size){
  if($size<1024) return $size.' b';
  if($size<1024*100) return __approx_round($size/1024).' Kb';
  return __approx_round($size/(1024*1024)).' Mb';
}


Добавлено @ 17:35 
И еще: 8 372 451 байт это не 8,4 Мегабайт, а 
8 372 451 / 1024 / 1024 = 7.98 Мегабайт


--------------------
PM   Вверх
Wolf1994
Дата 19.12.2006, 18:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 5.10.2004

Репутация: 7
Всего: 29



У меня есть готовая функция:

Код

function get_sizeform ($t)
{
 if ( strval (intval ($t))==$t )
 {
  $t_ar=array ("Кб", "Мб", "Гб", "Тб");
  $n=floor ((strlen ($t)-1)/3);
  $r=$t/pow (1024, $n);
  $r=round ($r, $n)." ".$t_ar [$n];
  return $r;
 }
 else
  return $t;
}


Не совсем то, что нужно, но может пригодится.

Это сообщение отредактировал(а) Wolf1994 - 19.12.2006, 18:32
PM MAIL WWW   Вверх
szz
Дата 19.12.2006, 18:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1289
Регистрация: 31.5.2005
Где: Moscow, Jerusalem

Репутация: 8
Всего: 33



все точно, только нужно сделать поправку для 0.1 - 0.9 Мега. У тебя ж будет показывать 100-900 кило smile


--------------------
PM   Вверх
Mal Hack
Дата 19.12.2006, 18:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Код
  function mod_get_filesize_as_string( $filesize ) 
   {
    if( $filesize < 1024 )
     {  return $filesize . " b";  }
    elseif( $filesize < 1048576 ) 
     {  return round( ( $filesize / 1024 ) , 2 ) . " Kb";  }
    elseif( $filesize < 1073741824 ) 
     {  return round( ( $filesize / 1048576 ) , 2 ) . " Mb";  }
    elseif( $filesize < 1099511627776 ) 
     {  return round( ( $filesize / 1073741824 ) , 2 ) . " Gb";  }
    else
     {  return round( ( $filesize / 1099511627776 ) , 2 ) . " Tb";  }
   }

PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0436 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.