1

PHPを使用して、テーブル内のファイルのリストの大きさを表示しています。デフォルトのバイトではなく、メガバイト単位で大きさを表示したいと思います。私が抱えている問題は、非常に長い小数を取得することです。これは、この目的には実用的ではありません。

これが私がこれまでに持っているものです:

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

これは値を正しく変換しますが、たとえばに変更71 B6.7710876436E-5 MBます。

E-5はおそらく正しく加算されるようなものだと思いますが、x10^-5いくつの数字になるかを切り取る方法はありますか?「00.00MB」と表示されても問題ありませんが、ほとんどのファイルはこのテストファイルよりもはるかに大きくなります。

4

5 に答える 5

6

number_format()関数を使用して数値をフォーマットできます。

編集:マニュアルページには、あなたが好きかもしれないユーザーコメントが含まれています:http://es.php.net/manual/en/function.number-format.php#72969

于 2011-08-28T18:38:59.873 に答える
3

古き良きprintfで:

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

たぶん、意図が少し明確だからです:

printf("%.2f MB",filesize("../uploads/" . $dirArray[$index]) / (1024 * 1024));
于 2011-08-28T18:41:07.537 に答える
1

number_format()round()良いです、そしてそれがあなたが望むどんな精度にでも数を丸めることができることを忘れないでください。

于 2011-08-28T18:41:05.507 に答える
0

他の単位も必要な場合は、私が何年も前に書いたこの関数を使用できます。

<?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);
?>
于 2011-08-28T19:08:45.297 に答える
0

ここに簡単な素敵な関数があります: Quick PHP

于 2011-08-28T18:42:34.930 に答える