限制PHP中的数字位数

时间:2011-08-28 18:37:46

标签: php string digits

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

这是我到目前为止所拥有的:

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

正确转换了值,但更改了71 B6.7710876436E-5 MB

我认为E-5的东西就像x10^-5,它可能会正确加起来,但有没有办法可以减少它下降的数量?如果它显示为“00.00 MB”对我来说很好,那么大多数文件都会比这个测试文件大得多。

5 个答案:

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