rottengeek
I'm not sure about 2005, but MS says that in 2000 'float' and 'real' are approximations. They aren't going to be exact, and when converting these values to other datatypes you can get 'unpredictable' results. I've seen this happen - and it can really do squirrelly things.
I have avoided these data types, especially for financial applications, as there is so much front end user reporting using different applications (sanctioned or not) that results can get very skewed.
I have even gotten differing results for the same computation - i avoid float like the plague.
From BOL 2000:
The float and real data types are known as approximate data types. The behavior of float and real follows the IEEE 754 specification on approximate numeric data types.
Approximate numeric data types do not store the exact values specified for many numbers; they store an extremely close approximation of the value. For many applications, the tiny difference between the specified value and the stored approximation is not noticeable. At times, though, the difference becomes noticeable. Because of the approximate nature of the float and real data types, do not use these data types when exact numeric behavior is required, such as in financial applications, in operations involving rounding, or in equality checks. Instead, use the integer, decimal, money, or smallmoney data types.
Avoid using float or real columns in WHERE clause search conditions, especially the = and <> operators. It is best to limit float and real columns to > or < comparisons.