【问题标题】:Limiting Number of Digits in PHP限制 PHP 中的位数
【发布时间】:2011-11-05 14:06:33
【问题描述】:

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

这是我目前所拥有的:

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

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

我认为 E-5 就像 x10^-5 可能会正确加起来,但是有没有办法可以切断它下降到多少个数字?如果它显示为“00.00 MB”,这对我来说没问题,大多数文件都会比这个测试文件大得多。

【问题讨论】:

    标签: php string digits


    【解决方案1】:

    您可以使用number_format() 函数格式化数字。

    编辑:手册页包含您可能喜欢的用户评论:http://es.php.net/manual/en/function.number-format.php#72969

    【讨论】:

      【解决方案2】:

      与好老printf

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

      也许,因为它的意图更清楚一点:

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

      【讨论】:

        【解决方案3】:

        number_format() 很好,别忘了round() 可以将数字四舍五入到你想要的任何精度。

        【讨论】:

          【解决方案4】:

          这是一个简单的好功能:Quick PHP

          【讨论】:

            【解决方案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);
            ?>
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2015-12-16
              • 2012-12-05
              • 1970-01-01
              • 2017-06-05
              相关资源
              最近更新 更多