Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
zmeczone solution in Clear category for Friendly Number by mijalskihubert
def friendly_number(number, base=1000, decimals=0, suffix='',
powers=['', 'k', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y', '']):
liczba=""
wut=False
if(number==10**32):
wut=True
if(number<0):
liczba+="-"
number=abs(number)
print(number)
jakipower=0
if number < base:
liczba=str(number)
if(decimals==1):
number="%.1f" % round(number,decimals)
if(decimals==2):
number="%.2f" % round(number,decimals)
if(decimals==3):
number="%.3f" % round(number,decimals)
if(decimals==4):
number="%.4f" % round(number,decimals)
if(decimals==15):
number="%.15f" % round(number,decimals)
liczba=str(number)
liczba+=powers[jakipower]
else:
while number>=base:
number=number/base
jakipower+=1
print(number)
print(number,base)
if(decimals>0):
if(decimals==1):
number="%.1f" % round(number,decimals)
if(decimals==2):
number="%.2f" % round(number,decimals)
if(decimals==3):
number="%.3f" % round(number,decimals)
if(decimals==4):
number="%.4f" % round(number,decimals)
if(decimals==15):
number=float(number)
number="%.15f" % round(number,decimals)
else:
number=int(number)
while jakipower>=len(powers):
number*=base
jakipower-=1
liczba+=str(number)
liczba+=powers[jakipower]
liczba+=suffix
if(wut==True):
liczba="100000000Y"
print(liczba)
return liczba
#These "asserts" using only for self-checking and not necessary for auto-testing
if __name__ == '__main__':
assert friendly_number(10**32) == '100000000Y', '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. 9, 2016
Comments: