Approximate-number data types for use with floating point numeric data... Not all values in the data type range can be represented exactly.I really like what Joe Celko said about these in one of his stairway to database design articles published on SSC (abridged to fit in the comment):
Avoid FLOAT and REAL in T-SQL. The problem is that FLOAT needs special handling to avoid rounding errors and do to comparisons. There is a very reason that they are called aproximate numeric data types. This special handling has to be either built into the software or (better) part of the hardware, which means you need a floating point processor. But even if the chips were cheap, you cannot reasonably expect T-SQL to do that kind of mathematical optimization. SQL is a data retrieval and management language and not meant for computations. If you need decimal places, then use DECIMAL(s,p) data types. They work just fine and they port. The trick is to give yourself enough decimal places to get correct rounding[1]: http://msdn.microsoft.com/en-us/library/ms173773.aspx
No one has followed this question yet.