C#浮点值不作为精确值插入

本文关键字:插入 不作为 | 更新日期: 2023-09-27 18:19:37

当将浮点插入SQL Server数据库时,我得到:

5.03000020980835

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

我是怎么收集这个浮子的?通过文本框控件转换为浮动

我目前如何处理数据:

   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,因此沿线的某个位置会附加其他数据,以使总值增加。我试图追踪这是在哪里发生的,但无法找出这是如何发生的以及为什么发生的。也许我忽略了什么?

C#浮点值不作为精确值插入

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

为了提高精度,请使用精度为15-16位有效数字的双精度或精度为28-29位有效数字。