Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
First solution in Uncategorized category for Friendly Number by foota
import math
def friendly_number(number, base=1000, decimals=0, suffix='',
powers=['', 'k', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y']):
ans = "0"
cnt = 0
if decimals == 0:
while abs(number) >= base and len(powers) > cnt + 1:
if number < 0:
number /= base
number = int(math.ceil(number))
else:
number //= base
cnt += 1
ans = "{0:d}{1}{2}".format(number, powers[cnt], suffix)
else:
while abs(number) >= base and len(powers) > cnt + 1:
number /= base
cnt += 1
ans = "{0:.{decimals}f}{1}{2}".format(number, powers[cnt], suffix, decimals=decimals)
return ans
#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'
March 28, 2014