2011-08-28 63 views
1

我正在使用PHP显示表中文件列表的大小。我想显示它们以兆字节而不是默认字节的大小。我遇到的问题是我得到了非常长的小数,这对于这个目的是不切实际的。限制PHP中的位数

这是我到目前为止有:

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

哪个正确换算值,但是改变,例如,71 B6.7710876436E-5 MB

我认为E-5的东西就像x10^-5这可能会正确地加起来,但是有没有办法可以切断多少个数字呢?如果它显示为“00.00 MB”,这对我来说很好,大多数文件将比这个测试更大。

回答

3

具有良好的老printf

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

也许,因为这是一个有点清晰的意图是什么:

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

谢谢,这工作很好:) – JacobTheDev

1

number_format()好,不要忘记,round()可以将该数字四舍五入到任何你想要的精确度。

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); 
?>