title: Rounding Stored vs. On-the-Fly Values
body: <p>Consider the average of four numbers {4.1, 4.1, 4.1, 4.3}, Dutch rounded to one decimal place.</p>
  <p>The average of the four numbers is exactly 4.15; when using VBA's <code>Round</code> function it correctly returns 4.2.  However, if I give it the expression that calculates the average it rounds incorrectly: <code>Round((4.1 + 4.1 + 4.1 + 4.3)/4, 1)</code> returns 4.1.  I can coax a correct
  answer by doing something like <code>Round(Round((4.1 ...)/4), 5), 1)</code> so I suspect it has something to do with how results of expressions are stored.  I also tried multiplying each number by 10 then dividing by 40, but the rounding was still incorrect.</p>
  <pre><code>? (4.1 + 4.1 + 4.1 + 4.3)/4
   4.15 
  ? Round(4.15, 1)
   4.2 
  ? Round((4.1 + 4.1 + 4.1 + 4.3)/4, 1)
   4.1
  ? Round(Round((4.1 + 4.1 + 4.1 + 4.3)/4, 5), 1)
   4.2  
  ? Round((4.1*10 + 4.1*10 + 4.1*10 + 4.3*10)/40, 1)
   4.1 
  </code></pre>
  <p><strong>Question:</strong>  In Excel/VBA, what's the difference between being given a float directly and being given an expression that evaluates as a float?</p>