title: Explicit conversion from Single to Decimal results in different bit representation
body: <p>If I convert <strong>single</strong> <em>s</em> into <strong>decimal</strong> <em>d</em> I've noticed it's bit representation differs from that of the decimal created directly.</p>
  
  <p>For example:</p>
  
  <pre><code>Single s = 0.01f;
  Decimal d = 0.01m;
  
  int[] bitsSingle = Decimal.GetBits((decimal)s)
  int[] bitsDecimal = Decimal.GetBits(d)
  </code></pre>
  
  <p>Returns (middle elements removed for brevity):</p>
  
  <blockquote>
  <pre><code>bitsSingle:
  [0] = 10
  [3] = 196608
  
  bitsDecimal:
  [0] = 1
  [3] = 131072
  </code></pre>
  </blockquote>
  
  <p>Both of these are decimal numbers, which both (appear) to be accurately representing 0.01:</p>
  
  <p><img src="https://i.stack.imgur.com/4P6n7.png" alt="enter image description here"></p>
  
  <p>Looking at the spec sheds no light except perhaps:</p>
  
  <blockquote>
    <p>§4.1.7 Contrary to the float and double data types, decimal fractional
    numbers such as 0.1 can be represented exactly in the decimal
    representation.</p>
  </blockquote>
  
  <p>Suggesting that this is somehow affected by <strong>single</strong> not being able accurately represent 0.01 before the conversion, therefore:</p>
  
  <ul>
  <li>Why is this not accurate by the time the conversion is done?</li>
  <li>Why do we seem to have two ways to represent 0.01 in the same datatype?</li>
  </ul>