2011-08-28 103 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); 
?>