SQL Real vs Float

Digamos que eu tenha as duas consultas a seguir:

select sum(cast(2666 as float)) * cast(.3 as float)
select sum(cast(2666 as real)) * cast(.3 as real)

A primeira consulta retorna:799.8
A segunda consulta retorna:799.800031781197

Por que a segunda consulta não retorna a mesma coisa que a primeira?