title: 0.1 float is greater than 0.1 double. I expected it to be false
body: <p>Let:</p>
  
  <pre><code>double d = 0.1;
  float f = 0.1;
  </code></pre>
  
  <p>should the expression</p>
  
  <pre><code>(f &gt; d)
  </code></pre>
  
  <p>return <code>true</code> or <code>false</code>?</p>
  
  <p>Empirically, the answer is <code>true</code>. However, I expected it to be <code>false</code>.  </p>
  
  <p>As <code>0.1</code> cannot be perfectly represented in binary, while double has <code>15</code> to <code>16</code> decimal digits of precision, and float has only <code>7</code>. So, they both are less than <code>0.1</code>, while the double is more close to <code>0.1</code>.</p>
  
  <p>I need an exact explanation for the <code>true</code>.</p>