believe that it is because of the following:
Set @V1=@V2 is doing CAST. And for CAST and smallmoeny data type default is to show 2 decimal digits.
If you do
CONVERT (varchar(10),@V@,2)
You should get 4 decimal digits.
(2 is for the style of showing it)
Also, smallmoney can have MAX 4 decimal digits, so you should either using some other type of have: Set @V2=1.1234
Please check BOL for CAST and CONVERT