Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
First solution in Clear category for Friendly Number by jtarnowska
def friendly_number(number, base=1000, decimals=0, suffix='',
powers=['', 'k', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y']):
sign = ''
if number < 0:
sign = "-"
num = ""
suff = ""
number, num = abs(number), num
for i, power in enumerate(powers):
if number // (base ** i) > 0:
num = str(number // (base ** i))
suff = powers[i]
if decimals:
i = powers.index(suff)
fraction = round(float(number) / (base ** i), decimals)
list = str(fraction).split(".")
num = list[0] + "." + list[1].zfill(decimals)
return sign+str(num)+suff+suffix
"""
Format a number as friendly text, using common suffixes.
"""
#These "asserts" using only for self-checking and not necessary for auto-testing
if __name__ == '__main__':
assert friendly_number(102) == '102', '102'
assert friendly_number(10240) == '10k', '10k'
assert friendly_number(12341234, decimals=1) == '12.3M', '12.3M'
assert friendly_number(12461, decimals=1) == '12.5k', '12.5k'
assert friendly_number(1024000000, base=1024, suffix='iB') == '976MiB', '976MiB'
Jan. 12, 2017