我正在處理一個十進制數值的問題,一切都很好,但在某個點它給了我錯誤輸入字符串調試後我的代碼沒有格式化我發現4.90702817E-05這使我此調用代碼錯誤。它轉換所有的代碼,但當它發現上面的字符串時拋出異常。使用Math.Round時出錯
MarketValue = Convert.ToDecimal(row["MarketValue"].ToString()) ,
我正在處理一個十進制數值的問題,一切都很好,但在某個點它給了我錯誤輸入字符串調試後我的代碼沒有格式化我發現4.90702817E-05這使我此調用代碼錯誤。它轉換所有的代碼,但當它發現上面的字符串時拋出異常。使用Math.Round時出錯
MarketValue = Convert.ToDecimal(row["MarketValue"].ToString()) ,
轉換通過使用下面的代碼爲十進制。以十進制形式獲取值後將其舍入。
decimal d = Decimal.Parse("4.90702817E-05", System.Globalization.NumberStyles.Float);
MarketValue = Decimal.Parse(row["MarketValue"].ToString(), NumberStyles.AllowExponent | NumberStyles.AllowDecimalPoint);
@rughes,如果你在評論中提到而不是發佈新的答案,它會更好! – Sajeetharan
的原因的例外可能是該值不是有效的decimal
。
以下代碼使用名爲TryParse(...)
的方法。如果該值不是有效的decimal
,則此方法返回false
,而不是拋出異常。
例如:
decimal d = 0;
if (Decimal.TryParse(row["MarketValue"].ToString(), out d))
{
MarketValue = d;
}
我建議你使用的TryParse使用下面的NumberStyles
decimal d = 0;
if (Decimal.TryParse(row["MarketValue"].ToString(), NumberStyles.AllowExponent | NumberStyles.AllowDecimalPoint, CultureInfo.CurrentCulture, out d))
{
MarketValue = d;
}
'拋出exception' - 它拋出什麼異常? – Anuraj
[從指數表示法解析數字]可能的重複(http://stackoverflow.com/questions/3879463/parse-a-number-from-exponential-notation) – Sean
該行中包含的實際類型是什麼?市場價值「]'?換句話說:你真的需要一個'.ToString',後面跟着'Convert'或'Parse',或者一個簡單的投射工作('(decimal)row [「..」]')? –