Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
Friendly number solution in Uncategorized category for Friendly Number by capback250
from math import log, floor
def friendly_number(number, base=1000, decimals=0, powers=['','k','M','G','T','P','E','Z','Y'], suffix=''):
body = "{0:.%df}{1}{2}" % decimals
if abs(number) < base:
return body.format(number, powers[0], suffix)
max_power = find_max_power(abs(number), base, powers)
sign = True if number >= 0 else False
return body.format(builder(abs(number), base, max_power, decimals, sign), powers[max_power], suffix)
def find_max_power(n, base, powers):
power = 0
for x in [base ** x for x in range(len(powers))]:
if n >= x:
power = x
else:
continue
return int(log(power, base))
def builder(number, base, max_power, decimals, sign):
if sign:
return floor(number/float(base**max_power)) if not decimals else number/float(base**max_power)
else:
return round(number/float(base**max_power), 1)*-1 if decimals else floor(number/float(base**max_power))*-1
Dec. 28, 2015