Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
Friendly number, clear solution solution in Clear category for Friendly Number by zaviskapavel
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.
"""
cnt = 0
number = float(number)
while abs(number) / base >= 1 and cnt < len(powers)-1: # divide the number with the multiplies of base
number = number / base
cnt += 1
if decimals == 0: # rounding towards zero
number = str(int(number))
else: # rounding using the standard procedure
number = str(round(number, decimals))
actual_decimals = len(number[number.index('.'):])-1
if actual_decimals != decimals: # check if the actual decimals is correct, if not, add zeros.
zeros = '0'*(decimals - actual_decimals)
number = number+zeros
return number+powers[cnt]+suffix
# 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'
assert friendly_number(2000, decimals=3) == '2.000k', 'No zeros added!'
assert friendly_number(102, decimals=2) == '102.00', '102.00'
Nov. 1, 2018
Comments: