Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
First solution in Clear category for Friendly Number by sts10131
def zeros(number,decimals):
if decimals==0:
number=int(number)
n=str(number)
else:
number=round(number,decimals)
n=str(number)
if n.find('.')==-1:
n=n+'.'+decimals*'0'
else:
n=n+(decimals-(len(n)-1-n.find('.')))*'0'
return n
def friendly_number(number, base=1000, decimals=0, suffix='',
powers=['', 'k', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y']):
power=0
while abs(number)>=base and power0 or number<0:
number=number/base
else:
number=number//base
power+=1
"""
Format a number as friendly text, using common suffixes.
"""
result=zeros(number,decimals)+powers[power]+suffix
return result
#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'
Dec. 28, 2016