Why does sql server have a hard time rounding floats?
Reading the SQL Server manual, it appears that the database is using an IEEE float under the hood.

As such, "weird things" are known to happen.

See this FAQ from SQLite (I suspect it applies here also):

(16) Why does ROUND(9.95,1) return 9.9 instead of 10.0? Shouldn't 9.95 round up?