代码之家  ›  专栏  ›  技术社区  ›  Matt Joiner

将数据量/容量格式化为字符串

  •  3
  • Matt Joiner  · 技术社区  · 14 年前

    是否有任何库包含执行这些转换的功能?在Python中?在C中?在伪代码中?关于“最可读”的形式,如有效字符数、精度等,是否有最佳实践。?

    3 回复  |  直到 14 年前
        1
  •  7
  •   Asclepius    12 年前

    下面是一种使用对数确定文件大小单位指数的方法:

    from math import log
    
    byteunits = ('B', 'KiB', 'MiB', 'GiB', 'TiB', 'PiB', 'EiB', 'ZiB', 'YiB')
    
    def filesizeformat(value):
        exponent = int(log(value, 1024))
        return "%.1f %s" % (float(value) / pow(1024, exponent), byteunits[exponent])
    
        2
  •  1
  •   fmark    14 年前

    我不确定这里是否有最佳实践,但有一些问题需要考虑。您需要回答两个问题:

    1. 使用base-1000或base-1024单位合适吗?
    2. 什么时候精度开始变得多余?

    关于单元的使用,有两个准则。首先, binary prefix 因此,至少你的用户可以知道发生了什么。其次,遵循最小惊喜的原则 使用问题域中常见的任何单元

    关于准确性,我认为这是一种判断。我不愿意报告一个以上的有效数字,因为在任何需要更高精度的情况下,字节数是您想要报告的度量值。

        3
  •  0
  •   Niet the Dark Absol    14 年前

    <?php
    $factor = 0;
    $units = ['B','KiB','MiB','GiB','TiB']
    while( $size > 1024 && $factor<count($units-1)) {
        $factor++;
        $size /= 1024; // or $size >>= 10;
    }
    echo round($size,2).$units[$factor];
    ?>