我有一個函數作爲下錯誤:指定的轉換是無效的,而轉換小數翻番
private double RoundOff(object value)
{
return Math.Round((double)value, 2);
}
而且我調用它作爲下
decimal dec = 32.464762931906M;
var res = RoundOff(dec);
我gettingthe以下錯誤
指定的演員表無效
什麼是錯誤?
感謝
我有一個函數作爲下錯誤:指定的轉換是無效的,而轉換小數翻番
private double RoundOff(object value)
{
return Math.Round((double)value, 2);
}
而且我調用它作爲下
decimal dec = 32.464762931906M;
var res = RoundOff(dec);
我gettingthe以下錯誤
指定的演員表無效
什麼是錯誤?
感謝
鑄造object
到double
將試圖拆箱的對象爲double,但裝箱對象是decimal
。您需要先將其拆箱,然後將其轉換爲雙精度。然後執行舍入:
Math.Round((double)(decimal)value, 2);
作爲替代約翰的回答,如果你想使用其他號碼類型不僅僅是小數,您可以使用此代碼;
private double RoundOff(object value)
{
return Math.Round(Convert.ToDouble(value), 2);
}
其他答案在獲取將會運行的東西方面是正確的 - 但我不會推薦使用它們。
您應該差不多從不轉換爲decimal
和double
。如果你想使用小數,你應該使用Math.Round(decimal)
。不要將小數轉換成雙倍和四捨五入 - 有可能會出現令人討厭的情況,即丟失信息。
選擇正確的代表並堅持下去。哦,並重新設計RoundOff
到不是以object
。通過一切手段有一個過載double
和一個decimal
,但給他們適當的參數類型。