title: Why the compiler decide 2.3 is double and not decimal?
body: <p>Why does the compiler decide that 2.3 is double so this code won't compile:</p>
  
  <pre><code>decimal x;
  x = 2.3; // Compilation error - can not convert double to decimal.
  x = (decimal) 2.3 // O.k.
  </code></pre>
  
  <p>Why the compiler doesn't think like this:<br>
  He wants to get a decimal, he give me a value that can be decimal, So it's decimal!</p>
  
  <p>And why this doesn't get compilation error:</p>
  
  <pre><code>short x;
  x = 23; // O.K.
  </code></pre>
  
  <p>Who said that 23 isn't an int?</p>