Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
限制PHP中的位数_Php_String_Digits - Fatal编程技术网

限制PHP中的位数

限制PHP中的位数,php,string,digits,Php,String,Digits,我正在使用PHP显示表中的文件列表有多大。我想用兆字节来显示它们的大小,而不是默认的字节。我遇到的问题是,我得到了非常长的小数,这对于这个目的是不切实际的 以下是我目前掌握的情况: printfilesize../uploads/$dirArray[$index]*.000000 953674316。MB 它可以正确地转换值,但会将例如71 B更改为6.7710876436E-5 MB 我认为E-5类似于x10^-5,可能加起来是正确的,但有没有一种方法可以将它减少到多少个数字?如果它显示为00

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

以下是我目前掌握的情况:

printfilesize../uploads/$dirArray[$index]*.000000 953674316。MB

它可以正确地转换值,但会将例如71 B更改为6.7710876436E-5 MB


我认为E-5类似于x10^-5,可能加起来是正确的,但有没有一种方法可以将它减少到多少个数字?如果它显示为00.00 MB,我觉得没问题,大多数文件将比这个测试文件大得多。

您可以使用该函数格式化数字


编辑:手册页面包含您可能喜欢的用户注释:

您可以使用该功能格式化数字

编辑:手册页面包含您可能喜欢的用户评论:

number\u格式很好,不要忘记可以将数字四舍五入到您想要的任何精度。

number\u格式很好,不要忘记可以将数字四舍五入到您想要的任何精度。

使用good old:

也许,因为更清楚的是意图是什么:

printf("%.2f MB",filesize("../uploads/" . $dirArray[$index]) / (1024 * 1024));
与好老:

也许,因为更清楚的是意图是什么:

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

这是一个简单的nice函数:

这是一个简单的nice函数:

如果您还需要其他单元,您可以使用我多年前编写的函数:

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

如果您还需要其他单元,可以使用我多年前编写的函数:

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