C#Float不会作为精确值插入

时间:2014-08-28 00:17:35

标签: c# sql-server

将float插入SQL Server数据库时,我得到:

5.03000020980835

这不是正在收集的确切值。

我如何收集这个漂浮物?通过文本框控件转换为float

我目前如何处理数据:

   private void PayRateTextBox_TextChanged(object sender, EventArgs e)
   {
       PayRateBox = float.Parse(PayRateTextBox.Text);
   }

以上是将内部浮点数设置为当前更新的文本框:

 private float PayRateBox = 0;

然后插入:

string Query = "INSERT INTO shifts (ShiftDate,WeekNumber,Hours,PayType,Rate) " + 
               "VALUES(@Date, @WeekNo, @Hours, @PayType, @Rate)";

并通过绑定参数绑定到查询:

CMD.Parameters.Add("@Rate", SqlDbType.Float);
CMD.Parameters["@Rate"].Value = PayRate;

TextBox中的默认文本设置为5.03,因此沿着其他位置添加其他数据以使总值增加。我试图追踪这种情况发生的地方,但无法找出这种情况发生的原因和原因。也许我忽略了什么?

1 个答案:

答案 0 :(得分:4)

float的精度限制为7位有效数字。在您的情况下,它意味着5.030000。其余小数位的值未定义。

要提高精确度,请使用精度为15-16位有效数字的double或带有28-29位有效数字的decimal