Let's abbreviate those numbers! Now reverse?
PHP, 234 224 213 201 205 bytes
for(;$x=$argv[++$n];){$y=str_replace(&quot;,&quot;,&quot;&quot;,$x)/1e3;for($i=0;$y&gt;999;$i++)$y=($y|0)/1e3;echo(A&lt;$c=substr($x,strlen($x)-1))?number_format($x*[k=&gt;1e3,m=&gt;1e6,b=&gt;1e9][$c]):($i?($y*10|0)/10:$y).kmb[$i],&quot; &quot;;}

6 bytes saved by insertusernamehere, 4 bytes inspired by that.


takes input from command line arguments, prints results space-separated with a trailing separator
expects lower case abbreviation
run with -r

-2 bytes if underscore as separator is ok: Replace &quot; &quot; with _.
-1 byte if correct rounding is ok: Replace ($y*10|0)/10 with round($y,1).
-17 bytes for PHP 7.1: Replace substr($x,strlen($x)-1) with $x[-1].

80 (63) bytes for expanding one argument only:
&lt;?=number_format(($x=$argv[1])*[K=&gt;1e3,M=&gt;1e6,B=&gt;1e9][substr($x,strlen($x)-1)]);

save to file, then execute (or replace &lt;?= with echo +space and run with -r.