# Simple short number notation

Wednesday September 8, 2021

Scientific notation is great, but "67B" is easier for most people than "6.7e10". I whipped up a quick Python function that does this for numbers up into the trillions. It always gives you back four characters, like this:

``````                   1.1 -> '  1 '
98.2 -> ' 98 '
111.7 -> '112 '
9_876   -> '9.9K'
12_345_678   -> ' 12M'
123_456_789_012   -> '123B'
999_123_456_789_012   -> '999T'``````

Thousands as "K" might be a little unfamiliar for some audiences, but overall I think this is pretty good, for example for labeling axes. Here's the code:

``````def tdn(number):
"""Short (Three-Digit Number) string representation"""
assert 0 <= number < 9.995e14, 'outside range of defined behavior'
if number < 1000:
return f'{round(number):3d} '
number /= 1000
for symbol in 'KMBT':
if number >= 1000:
number /= 1000
continue
if number >= 10:
return f'{number:3.0f}{symbol}'
return f'{number:1.1f}{symbol}'
return result``````

There's probably a nicer way to do it; feedback (and pull requests on GitHub) welcome!