An adaptation of Yonatan's answer, that prints a given number of significant digits:
def humanize_number[value, significant_digits=3, strip_trailing_zeros=True]:
"""
Adaption of humanize_numbers_fp that will try to print a given number of significant digits, but sometimes more or
less for easier reading.
Examples:
humanize_number[6666666, 2] = 6.7M
humanize_number[6000000, 2] = 6M
humanize_number[6000000, 2, strip_trailing_zeros=False] = 6.0M
humanize_number[.666666, 2] = 0.67
humanize_number[.0006666, 2] = 670µ
"""
powers = [10 ** x for x in [12, 9, 6, 3, 0, -3, -6, -9]]
human_powers = ['T', 'B', 'M', 'K', '', 'm', u'µ', 'n']
is_negative = False
suffix = ''
if not isinstance[value, float]:
value = float[value]
if value < 0:
is_negative = True
value = abs[value]
if value == 0:
decimal_places = max[0, significant_digits - 1]
elif .001