我正在使用PHP显示表中文件列表的大小。我想显示它们有多大(以兆字节为单位)而不是默认字节。我遇到的问题是我得到了非常长的小数,这对于这个目的来说是不切实际的。
这是我到目前为止所拥有的:
print((filesize("../uploads/" . $dirArray[$index])) * .000000953674316 . " MB");
正确转换了值,但更改了71 B
到6.7710876436E-5 MB
。
我认为E-5的东西就像x10^-5
,它可能会正确加起来,但有没有办法可以减少它下降的数量?如果它显示为“00.00 MB”对我来说很好,那么大多数文件都会比这个测试文件大得多。
答案 0 :(得分:6)
您可以使用number_format()功能格式化数字。
修改:手册页包含您可能喜欢的用户评论:http://es.php.net/manual/en/function.number-format.php#72969
答案 1 :(得分:3)
好老printf:
printf("%.2f MB",filesize("../uploads/" . $dirArray[$index]) * .000000953674316);
也许,因为意图是更清楚的是:
printf("%.2f MB",filesize("../uploads/" . $dirArray[$index]) / (1024 * 1024));
答案 2 :(得分:1)
number_format()
很好,不要忘记round()
可以将数字四舍五入到你想要的任何精度。
答案 3 :(得分:0)
这是一个简单的好功能:Quick PHP
答案 4 :(得分: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);
?>