System.Data.SqlClient在SQL Server中存储错误的数据

时间:2017-10-14 19:54:07

标签: sql-server floating-point

我有一个C#程序提取一些数据并放入SQL Server

public void UpdateElementInfo()
{
    var _db = new MyEntities();

    var mylist = _db.elements.Where(x => x.id != null);

    IList<ele> plist = mylist.ToList<ele>();

    foreach (ele p in plist)
    {
        var query = from myRow in dtrr.AsEnumerable()
                    where myRow.Field<string>("num") == p.id.ToString()
                    select myRow;
        var rrrr = query.OrderByDescending(x => x.Field<DateTime>("updated_at")).FirstOrDefault();

        {
            p.my_interested_param = (double?)rrrr.Field<decimal?>("parameter") * 100;

所以,如果我{i}这个my_interested_pa​​ram Console.WriteLine(),它会按预期显示,例如4.12。但是,当我查看SQL Server时,这个数字实际上转换为4.1200000000000003。而且,这种转换不会发生在所有行上。所以这对我来说很奇怪。

我读到这可能是由于选择存储此号码的FLOAT数据类型。但是,如果我们必须使用FLOAT来存储它,我们可以做些什么。

0 个答案:

没有答案