SQL Server 2000, no service pack.
SELECT ROUND (CAST( 24.399999999999999 as float), 2)
-----------------------------------------------------
24.399999999999999
SELECT ROUND (CAST( 24.399999999999999 as real), 2)
-----------------------------------------------------
24.399999999999999
SELECT ROUND (CAST( 24.399999999999999 as money), 2)
---------------------
24.4000
SELECT ROUND (CAST( 24.399999999999999 as decimal(8,4)), 2)
----------
24.4000
Do you observe the same? Am I missing something?