The other answers will change the field separator rather than preserving it. So if files have tabs vs. spaces, this could break the file. Better is to preserve the separator in the replacement text. Although that's a more complex pattern (Perl):
s/(\s)\.(\s)/${1}0${2}/g;
or
$ perl -pe 's/(\s)\.(\s)/${1}0${2}/gx;' <dat
Likely you hit the problem of using 102 which could be interpreted as backreferencing the 10th match (although Perl isn't supposed to behave that way..).
You asked for perl/sed/awk, however it's also very easy in Vim. Vim is handy for this because you can experiment with bunch of regex's and then hit Undo until you finally get what you want.
Why not replacing occurrences of "t." by "t0" ?
If the input contains malformatted float values, then numbers might begin with dot... i.e. " .123 "