Ok, I must admit, I've not seen such am alarming example of float mathematics going wrong before. This is kinda scary.
While I have your attention though... how do you get around the decimal rounding problem:
declare @a decimal (38,28) = 1.123456789
declare @b-2 decimal (38,28) = 1.123456789
declare @C decimal (38,28) = 1.123456789
?