使用Math.Round时出错

时间:2014-06-17 09:15:10

标签: c#

我正在研究一个问题来舍入十进制值一切都很好,但在某一点它给我错误输入字符串没有格式化后调试我的代码我发现4.90702817E-05这给了我这个调用代码的错误。它转换所有代码但在找到上面的字符串时抛出异常。

 MarketValue = Convert.ToDecimal(row["MarketValue"].ToString()) ,

4 个答案:

答案 0 :(得分:2)

  MarketValue = Decimal.Parse(row["MarketValue"].ToString(), NumberStyles.AllowExponent | NumberStyles.AllowDecimalPoint);

答案 1 :(得分:1)

使用以下代码转换为Decimal。在以十进制形式获得值后,将其四舍五入。

decimal d = Decimal.Parse("4.90702817E-05", System.Globalization.NumberStyles.Float);

答案 2 :(得分:0)

异常的原因可能是该值不是有效的decimal

以下代码使用名为TryParse(...)的方法。如果值不是有效false,则此方法返回decimal,而不是抛出异常。

例如:

decimal d = 0;
if (Decimal.TryParse(row["MarketValue"].ToString(), out d))
{
    MarketValue = d;
}

答案 3 :(得分:0)

我建议您使用以下NumberStyles

来使用TryParse
    decimal d = 0;
    if (Decimal.TryParse(row["MarketValue"].ToString(), NumberStyles.AllowExponent | NumberStyles.AllowDecimalPoint, CultureInfo.CurrentCulture, out d))
    {
        MarketValue = d;
    }