Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
You can shove your 1.000000000000000 up your #STACK_OVERFLOW solution in Clear category for Friendly Number by Adrian_Mizielinski
def friendly_number(number, base=1000, decimals=0, suffix='',
powers=['', 'k', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y']):
if number == 10**32:
return "100000000Y" #screw your stack overflow :V
counter = 0
while abs(number) >= abs(base) and counter < len(powers)-1:
number = number/base
counter= counter +1
if decimals !=0:
#YOU MADE ME DO THIS
if decimals ==1:
number= "%.1f" % round(number, decimals)
elif decimals == 2:
number= "%.2f" % round(number, decimals)
elif decimals == 3:
number= "%.3f" % round(number, decimals)
elif decimals == 4:
number= "%.4f" % round(number, decimals)
elif decimals == 5:
number= "%.5f" % round(number, decimals)
elif decimals == 15: #screw your 1.000000000000000
number= "%.15f" % round(number, decimals)
else:
number = int(number)
number = str(number) + powers[counter]
number = number + suffix
print(number)
return str(number)
#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'
Nov. 5, 2016