David,
Mathematica does keep all of the precision. You are just seeing how it displays the numbers in its OutpuForm. You should read the documentation about Precision but here is some of it in a nutshell:
ans = 3^Sqrt[2.]
Displays in OuputForm as
4.7288
If you do NumberForm you can see the whole thing (The default of 2.0 is 16 decimal places of precision):
NumberForm[ans,16]
gives
4.728804387837416
You also get all the digits if you do CForm or InputForm, etc.:
ans //CForm
You can set the precision of a number with the prime symbol (`) :
For example:
In[21]:= 3^Sqrt[2`30]
Out[21]= 4.72880438783741494789428334042
This tells mathematica that the 2 is really 2.000... to 30 decimal places.
You can do this as well:
2.35463`15
To mean that the number is 2.3546300000000000000
I hope this helps. As an experiment, take the output of a number from Mathematica and copy and paste it as input -- you will see it add the precision mark and you can see the actual precision of that result -- not what was displayed in the OutputForm.