Formatting long numbers as strings

formatting, integer, python, string

Solution

I don't think there's a built-in function that does that. You'll have to roll your own, e.g.:

def human_format(num):
    magnitude = 0
    while abs(num) >= 1000:
        magnitude += 1
        num /= 1000.0
    # add more suffixes if you need them
    return '%.2f%s' % (num, ['', 'K', 'M', 'G', 'T', 'P'][magnitude])

print('the answer is %s' % human_format(7436313))  # prints 'the answer is 7.44M'

Problem

What is an easy way in Python to format integers into strings representing thousands with K, and millions with M, and leaving just couple digits after comma? I'd like to show 7436313 as 7.44M, and 2345 as 2,34K. Is there some % string formatting operator available for that? Or that could be done only by actually dividing by 1000 in a loop and constructing result string step by step?

Original source