• You get FLOAT as a result because of SQL Data Type Precedence (Look up "Data Type Precedence" in BOL).

    29.99 is a valid decimal, and is a valid value that can be assigned to a FLOAT. But, because a FLOAT can store huge values, the trade-off is a loss of precision. Therefore you can assign 29.99 to a FLOAT but it cannot store that precise value and thus stores the closest thing it can. Try...

     
    
    declare @x float
    set @x = 29.99
    SELECT @x

    Result will be:

    29.989999999999998

    Edited by - mccork on 07/28/2003 9:42:51 PM


    Cheers,
    - Mark