Linq group by is showing wrong mathematical results. I have tried to extract & minimize the code to the point.
public class ModelBO
{
public string Code { get; set; }
public double Amt { get; set; }
}
List<ModelBO> list = new List<ModelBO>();
list.Add(new ModelBO { Code = "A2", Amt = 0.97 });
list.Add(new ModelBO { Code = "A2", Amt = -3.36 });
list.Add(new ModelBO { Code = "A2", Amt = -0.01 });
list.Add(new ModelBO { Code = "A2", Amt = 1.42 });
list.Add(new ModelBO { Code = "A2", Amt = -0.01 });
list.Add(new ModelBO { Code = "A2", Amt = 0.03 });
list.Add(new ModelBO { Code = "A2", Amt = -0.14 });
list.Add(new ModelBO { Code = "A2", Amt = -0.02 });
list.Add(new ModelBO { Code = "A2", Amt = -0.05 });
list.Add(new ModelBO { Code = "A2", Amt = 0.03 });
list.Add(new ModelBO { Code = "A2", Amt = 0.06 });
list.Add(new ModelBO { Code = "A2", Amt = 0.01 });
list.Add(new ModelBO { Code = "A2", Amt = 0.51 });
list.Add(new ModelBO { Code = "A2", Amt = 0.29 });
list.Add(new ModelBO { Code = "A2", Amt = -0.67 });
list.Add(new ModelBO { Code = "A2", Amt = 0.02 });
list.Add(new ModelBO { Code = "A2", Amt = 0.08 });
list.Add(new ModelBO { Code = "A2", Amt = 0.09 });
list.Add(new ModelBO { Code = "A2", Amt = 0.37 });
list.Add(new ModelBO { Code = "A2", Amt = 0.17 });
list.Add(new ModelBO { Code = "A2", Amt = 0.21 });
List<ModelBO> t = list.GroupBy(x => new { x.Code }).Select(g => new ModelBO { Code = g.Key.Code, Amt = g.Sum(x => x.Amt) }).ToList();
Now, in results, t[0].Amt should be zero. But, I am getting different result. What must be wrong here.