title: Floating point inconsistency between expression and assigned object
body: <p>This surprised me - the same arithmetic gives different results depending on how its executed:</p>
  
  <pre><code>&gt; 0.1f+0.2f==0.3f
  False
  
  &gt; var z = 0.3f;
  &gt; 0.1f+0.2f==z
  True
  
  &gt; 0.1f+0.2f==(dynamic)0.3f
  True
  </code></pre>
  
  <p>(Tested in Linqpad)</p>
  
  <p>What's going on?</p>
  
  <hr>
  
  <p><strong>Edit</strong>: I understand why floating point arithmetic is imprecise, but not why it would be <em>inconsistent</em>.</p>
  
  <p>The venerable C reliably confirms that <em>0.1 + 0.2 == 0.3</em> holds for single-precision floats, but not double-precision floating points.</p>