When SetPrecision is used to increase the precision of a number, the number is padded with zeros. The zeros are taken to be in base 2. In base 10, the additional digits are usually not zeros.
If there are numbers too large or small to represent machine-precision numbers, SetPrecision[expr, MachinePrecision] will convert them to arbitrary-precision numbers with precision $MachinePrecision.
If expr contains machine-precision numbers, SetPrecision[expr, p] can give results which differ from one computer system to another.
SetPrecision will first expose any hidden extra digits in the internal binary representation of a number, and only after these are exhausted add trailing zeros. »
0.004`25 generates a number with all trailing digits zero and precision 25 on any computer system.
SetPrecision[expr, p] does not modify expr itself.