• If you can, use FLOAT instead of the REAL datatype. The REAL datatype has limited precision, and the conversion from the internal base 2 to base 10 results in these types of conversion difficulties.

    Better yet, store your values in a numeric datatype to avoid the base 2 to base 10 conversion problems. The FLOAT and REAL datatypes should not be used for anything except scientific calculations.

    DECLARE @i float(53) = 989500000.00;

    SELECT CAST(@i AS MONEY)