Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
Friendly Number solution in Clear category for Friendly Number by roelschlaeger
def friendly_number(
n,
base=1000,
decimals=0,
suffix="",
powers=['', 'k', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y']
):
"""Return a string representing a number in a 'friendly' format."""
number = float(abs(n))
base = float(base)
shifts = 0
while (number >= base) and (shifts < (len(powers) - 1)):
number /= base
shifts += 1
if decimals == 0:
from math import floor
number = floor(number)
if n < 0:
number = -number
number = "%.*f" % (decimals, round(number, decimals))
out = str(number) + powers[shifts] + suffix
print(n, base, decimals, suffix, powers, ":", out)
return out
#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'
Sept. 26, 2016