我正在尝试舍入一个与Lambda表达式求和的十进制属性。但四舍五入不起作用。这是我的代码:
public decimal ActualWeight
{
get
{
decimal actual = 0;
try
{
actual = Math.Round((from c in Containers select c.NetWeight).Sum());
}
catch
{
actual = 0;
}
return actual / (Constants.METRICTONS);
}
}
我尝试过这方面的变化而且没有任何效果。我在我的应用程序的其他地方使用Math.Round相同的值,它的工作原理如下:
tab2.Cell(1 + x, 5).Value = Math.Round(c.MetricTons, 3).ToString();
这很好用。有人能告诉我为什么我的Math.Round方法在应用于我的lambda表达式/属性时无法正常工作吗?
我正在寻找的正确舍入值是241.978。 但我破碎的数学一直在返回241.976。
答案 0 :(得分:0)
以下测试用例按预期工作。输出为28
。
List<decimal> Containers = new List<decimal> {Decimal.Parse("5.11"),
Decimal.Parse("4.1"),
Decimal.Parse("7.6"),
Decimal.Parse("1.9"),
Decimal.Parse("9.1")};
decimal actual = 0;
try
{
actual = Math.Round((from c in Containers select c).Sum());
}
catch
{
actual = 0;
}
Console.WriteLine(actual);
因此,我认为您的问题可能出在另一段代码中。