title: How to avoid reading Decimal value as Float in Openrowset
body: <p>In my excel, some values are like this</p>
  
  <pre><code>11.17
  3.35
  2.28
  1.4
  </code></pre>
  
  <p>stored in <code>General</code> type.</p>
  
  <p>After importing the excel to database some values decimal places are completely getting changed. </p>
  
  <p>Example </p>
  
  <pre><code>SELECT * into #temp 
      FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',    
                      'Excel 12.0;IMEX=1;Database=D:\test\testfile.xlsx',
                       [Data$])  
  </code></pre>
  
  <p>the data from <code>#temp</code> will be inserted in destination table with datatype <code>decimal(38,20)</code>. </p>
  
  <pre><code>11.17 is changed to 11.17000000000000000000
  3.35 is changed to 3.35000000000000010000
  2.28 is changed to 2.27999999999999980000--wrong
  1.4 is changed to 1.39999999999999990000--wrong
  </code></pre>
  
  <p>upon checking I found the datatype of column in <code>#temp</code> is <code>float</code>, which is causing this issue as its a approximate datatype.</p>
  
  <p>Is there a way to avoid storing it in float ?</p>
  
  <p>I know we can us <code>BULK</code> option with <code>fmt</code> file, but the number of columns in excel is not static so I cannot use that option. </p>