title: Npgsql returns additional "0" decimals after all numeric values
body: <p>We recently upgraded our Npgsql library from (very old) 2.0.11.91 to latest build 3.2.1.</p>
  
  <p>In Npgsql 2, all numeric values returned (either using NpgsqlDataAdapter, NpgsqlDataReader, etc) would have the precision and scale of the datatype in the query (or in the Postgres table if not specifically set in the query). For example:</p>
  
  <pre><code>string sql_query = "SELECT 2.33::numeric(38,2)" would return 2.33
  </code></pre>
  
  <p>In Npgsql 3 however, all numeric values with decimals are now returned (either using NpgsqlDataAdapter, NpgsqlDataReader, etc) with additional unnecessary decimals (total count of decimals always = 4), despite precision &amp; scale being set in the query (or in the Postgres table). For example:</p>
  
  <pre><code>string query = "SELECT 2.33::numeric(38,2)" now returns 2.3300
  
  string query= "SELECT 2.3::numeric(38,1)" now returns 2.3000
  </code></pre>
  
  <p>Code extract with NpgsqlDataAdapter to DataGridView: </p>
  
  <pre><code>NpgsqlConnection conn = new NpgsqlConnection("all_required_paramaters");
  conn.Open();
  
  DataSet ds = new DataSet();
  DataTable dt = new DataTable();
  
  string sql = "SELECT date , numeric_data1, numeric_data2 , numeric_data3 
  FROM any_table order by date desc ";
  
  NpgsqlDataAdapter da = new NpgsqlDataAdapter(sql, conn);
  ds.Reset();
  da.Fill(ds);
  dt = ds.Tables[0];
  dataGridView_ABC.DataSource = dt;
  
  conn.Close();
  </code></pre>
  
  <p>Code extract with NpgsqlDataReader</p>
  
  <pre><code>NpgsqlConnection conn = new NpgsqlConnection("all_required_paramaters");
  
  conn.Open();
  
  string sql = "SELECT date , numeric_data1, numeric_data2 , numeric_data3 
  FROM any_table order by date desc ";
  
  NpgsqlCommand cmd = new NpgsqlCommand(sql, conn);
  Npgsql.NpgsqlDataReader res = cmd.ExecuteReader();
  
  List&lt;string&gt; _data1 = new List&lt;string&gt;();
  List&lt;string&gt; _data2 = new List&lt;string&gt;();
  List&lt;string&gt; _data3 = new List&lt;string&gt;();
  
  while (res.Read())
  {
  _data1.Add(res["numeric_data1"].ToString());
  _data2.Add(res["numeric_data2"].ToString());
  _data3.Add(res["numeric_data3"].ToString());
  }
  
  conn.Close();
  res.Close();
  </code></pre>
  
  <p>Only exception to this is when values don't have any decimal, they are correctly be returned, for example:</p>
  
  <pre><code> string query= "SELECT 2::numeric(38,0)" does correctly returns 2
  </code></pre>
  
  <p>Question : How can we make Npgsql 3.2.1 return the precision and scale of the data type &amp; length in the query or in the Postgres table (i.e. without all unnecessary additional decimals) as it was done by default in Npgsql 2? </p>
  
  <p>Thank you very much.</p>