2014-02-27 38 views
0

我正在嘗試將與Lambda表達式求和的小數屬性四捨五入。但是舍入不起作用。這裏是我的代碼:當應用於屬性時,Math.Round不起作用

 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

'但四捨五入不工作'。你什麼意思?它是否懶惰,拒絕工作? –

+2

在我看來,來自Containers的數據與此應用程序的其他部分略有不同。嘗試分配.Sum()的結果並將其與您在程序的「正確」部分中看到的內容進行比較。 –

+1

您能否爲您提供'NetWeight'的測試場景和'NetWeight'類型(小數點?雙?浮點數?)的樣本值 –

回答

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

因此,我認爲你的問題可能在另一塊代碼。