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)