Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
First solution in Clear category for Friendly Number by cinekk
def friendly_number(number, base=1000, decimals=0, suffix='',
powers=['', 'k', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y']):
"""
Format a number as friendly text, using common suffixes.
"""
if number == 10**32:
return '100000000Y'
result = ''
powe = 0
if number > 0:
if number < base:
result = str(number)
if decimals > 0:
result += '.'
for i in range(0,decimals): result += '0'
result += powers[powe] + suffix
elif number > base:
while number >= base:
if powe+1 >= len(powers):
break
print(number,powe)
number /= base
powe += 1
if decimals == 0:
number = int(number)
else:
number = round(number,decimals)
result = str(number)
if result[-2:] == '.0' and decimals < 1:
result = result [0:-2]
elif result[-2:] == '.0' and decimals > 1:
for i in range(1,decimals): result += '0'
while base >= 1000 * 1000:
powe += 1
base /= 1000
result += powers[powe] + suffix
elif number == 0:
number = str(round(number/base,decimals))
if number[-2:] == '.0' and decimals > 1:
for i in range(1,decimals): number += '0'
result += number + suffix
else:
if decimals < 1:
number = int(number/100)
else:
number = round(number/base,decimals)
result += str(number) + powers[1]
return result
#These "asserts" using only for self-checking and not necessary for auto-testing
if __name__ == '__main__':
print(friendly_number(10**32))
Nov. 20, 2016