In ksh only (not in bash), this just works:
printf '%#d\n' 105000000
105M
Even this!!!
printf "%#d\n" 12e+12 1.2e+4 12e+6
12T
12k
12M
printf has to be called directly in ksh, but not as part of e.g. awk or as part of a pipe with xargs...