Math.Round在应用于属性时不起作用

时间:2014-02-27 22:29:04

标签: c# properties lambda rounding

我正在尝试舍入一个与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。

1 个答案:

答案 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);

因此,我认为您的问题可能出在另一段代码中。