I have a C# program pulling some data and put into 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;
So if I do Console.WriteLine() this my_interested_param, it shows as expected, 4.12 for example. However, when I looked in SQL Server, this number is actually converted into 4.1200000000000003. Moreover, this conversion does not happen to all of the rows. So it is very strange to me. 
I read that this might be due to the FLOAT data type chosen to store this number. However, what we could do if we have to use FLOAT to store it.
 
    