To my surprise, I run the following queries in SQL Server 2014 and each returns a different result, as shown in [this db<>fiddle](https://dbfiddle.uk/?rdbms=sqlserver_2014&fiddle=8f9376dd165d3d2da83114bdb7a19cb3)... 

This

    Select convert(numeric(19,2),convert(float,9.76499999999999999999999999))

gives *9.76*.

And this

    Select convert(numeric(19,2),convert(float,9.7649999999999999999999))

gives *9.77*.

Can someone explain why one truncates while the other rounds up?
This is causing a nightmare for me. 

I wish I could just stop using floats but they are all over our application, which has been ongoing for over 30 years.