title: SQL server 2005 numeric precision loss
body: <p>Debugging some finance-related SQL code found a strange issue with numeric(24,8) mathematics precision.</p>
  
  <p>Running the following query on your MSSQL you would get A + B * C expression result to be 0.123457</p>
  
  <p>SELECT A,
         B,
         C,
         A + B * C
  FROM
  (
  SELECT CAST(0.12345678 AS NUMERIC(24,8)) AS A,
         CAST(0 AS NUMERIC(24,8)) AS B,
         CAST(500 AS NUMERIC(24,8)) AS C
  ) T</p>
  
  <p>So we have lost 2 significant symbols. Trying to get this fixed in different ways i got that conversion of the intermediate multiplication result (which is Zero!) to numeric (24,8) would work fine.</p>
  
  <p>And finally a have a solution. But still I hace a question - why MSSQL behaves in this way and which type conversions actually occured in my sample?</p>