Convert numbers to SI notation
$ awk '{ split(sprintf("%1.3e", $1), b, "e"); p = substr("yzafpnum_kMGTPEZY", (b[2]/3)+9, 1); o = sprintf("%f", b[1] * (10 ^ (b[2]%3))); gsub(/\./, p, o); print substr( gensub(/_[[:digit:]]*/, "", "g", o), 1, 4); }' < test.dat
converts any number on the 'stdin' to SI notation. My version limits to 3 digits of precious (working with 10% resistors).
Sample Output
1
10
100
1k23
10k0
100k
1M00
24k5
4k54
2P35
0m34
0n35