Comportamiento extraño del techo () de SQL Server

¿Alguien puede explicar los siguientes resultados en SQL Server? Estoy perplejo.

declare @mynum float = 8.31

select ceiling( @mynum*100)

Resultados en831

declare @mynum float = 8.21

select ceiling( @mynum*100)

Resultados en822

He probado un rango completo de números (enSQL Server 2012) Algunos aumentan mientras que otros permanecen igual. No entiendo por qué el techo trata a algunos de ellos de manera diferente. Cambio de unfloat a undecimal(18,5) parece solucionar el problema, pero desconfío de que pueda haber otras repercusiones. Cualquier explicación ayudaría.

Respuestas a la pregunta(2)

Su respuesta a la pregunta