def human_readable(n, digits=3):
    """
    return a human readable number of bytes.
    
    args:
        * n (float): the number to return as human readable.
        * digits (int): the number of digits before the decimal point.
        
    returns:
        tuple:
            0. (float) human readable number or None if n is None.
            #. (str) suffix or None if n is None.
    """
    suffixes = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']
    suffix = suffixes[0]
    for c in suffixes[1:]:
        if len(str(abs(int(n)))) > digits:
            n /= 1024
            suffix = c
    return n, suffix
