<p>I am working on a legacy ASP application. I am attempting to insert a value (40.33) into a field in SQL Server 2000 that happens to be a float type.  Every place I can see (via some logging) in the application is sending 40.33 to the Stored Procedure.  When I run SQL Profiler against the database while the call is happening, the value that I see in the trace is 4.033000183105469e+001</p>

<p>Where is all the extra garbage coming from (the 183105469)?</p>

<p>Why is it that when I pass in 40, or 40.25 there is nothing extra?</p>

<p>Is this just one of the weird side effects of using float?  When I am writing something I normally use money or decimal or something else, so not that familiar with the float datatype.</p>

I think this is probably just a precision issue - the 0.33 part of the number can't be represented exactly in binary - this is probably the closest that you can get to.