2011-04-05 37 views

回答

2

鑄造objectdouble將試圖拆箱的對象爲double,但裝箱對象是decimal。您需要先將其拆箱,然後將其轉換爲雙精度。然後執行舍入:

Math.Round((double)(decimal)value, 2);

0

作爲替代約翰的回答,如果你想使用其他號碼類型不僅僅是小數,您可以使用此代碼;

private double RoundOff(object value) 
    { 
     return Math.Round(Convert.ToDouble(value), 2); 
    } 
2

其他答案在獲取將會運行的東西方面是正確的 - 但我不會推薦使用它們。

您應該差不多從不轉換爲decimaldouble。如果你想使用小數,你應該使用Math.Round(decimal)。不要將小數轉換成雙倍和四捨五入 - 有可能會出現令人討厭的情況,即丟失信息。

選擇正確的代表並堅持下去。哦,並重新設計RoundOff不是object。通過一切手段有一個過載double和一個decimal,但給他們適當的參數類型。