这段代码读取文件的大小,但是1.759864Mb的文件的输出将是1Mb,我希望它是2Mb。我知道这是关于改变一件小事但是我找不到它是什么.
function Size($path)
{
$bytes = sprintf('%u', filesize($path));
if ($bytes > 0)
{
$unit = intval(log($bytes, 1024));
$units = array('B', 'Kb', 'Mb', 'Gb');
if (array_key_exists($unit, $units) === true)
{
return sprintf('%d %s', $bytes / pow(1024, $unit), $units[$unit]);
}
}
return $bytes;
}发布于 2012-07-22 23:46:07
它应该是
return sprintf('%d %s', ceil($bytes / pow(1024, $unit)), $units[$unit]);如果需要,ceil通过向上取整返回下一个最大的整数值。
发布于 2012-07-22 23:47:42
ceil($bytes / pow(1024, $unit));发布于 2012-07-22 23:49:39
我建议使用PHP round函数,而不是只让sprintf来进行舍入(使用%d):
return sprintf('%d %s', round($bytes / pow(1024, $unit)), $units[$unit]);https://stackoverflow.com/questions/11601647
复制相似问题