Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
First solution in Clear category for Friendly Number by Machinero
def friendly_number(number, base=1000, decimals=0, suffix='',
powers=['', 'k', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y']):
i = 0
char = ""
if number < 0:
char = '-'
number = abs(number)
while number / base ** i >= base:
i+=1
if i >= len(powers):
i = len(powers)-1
if decimals == 0:
x = str(int(number / base ** i))
return char+x+powers[i]+suffix
elif decimals > 0:
x = str(round(number/ base ** i, decimals))
list = x.split('.')
p = char + list[0] + '.' + list[1].zfill(decimals) + powers[i] + suffix
return char + list[0] + '.' + list[1].zfill(decimals) + powers[i] + 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'
assert friendly_number(-150, base=100, powers=["","d","D"]) == "-1d"
assert friendly_number(255000000000, powers=["","k","M"])
assert friendly_number(10**32)
Dec. 17, 2016