如何在来自数据表的C#中解析此数据

时间:2012-06-06 22:20:10

标签: c# excel parsing numbers decimal

我有以下C#代码从数据表中读取数据(这是从Excel电子表格构建的原始数据)

    private byte GetVal(DataRow dataRow, string caption)
    {
        var val = dataRow.GetValue(caption).ToString().Trim();
        if (!String.IsNullOrEmpty(val))
        {
            return (byte)(Decimal.Parse(val) * 100);
        }
        return (byte)0;
    }

这种情况正在爆发,因为它的值为:“5.5555555555555552E-2”从其中一个单元格读入(val变量)

它在这条线上爆炸:

    return (byte)(Decimal.Parse(val) * 100);

错误:输入字符串的格式不正确。

解决这个问题的最佳方法是什么,这样我才能读到价值?

2 个答案:

答案 0 :(得分:2)

试试这个:

return (byte)(Decimal.Parse(val, System.Globalization.NumberStyles.Float, System.Globalization.CultureInfo.InvariantCulture));

Decimal.Parse Method (String, NumberStyles, IFormatProvider)

NumberStyles.AllowExponent AllowExponentNumberStyles.Float的一个子集)

  

表示数字字符串可以是指数表示法。该   AllowExponent标志允许解析的字符串包含指数   以“E”或“e”字符开头,后跟一个   可选的正号或负号和整数。换句话说,它   成功解析nnnExx,nnnE + xx和nnnE-xx形式的字符串。   它不允许小数点分隔符或有效数字符号或   尾数;要允许解析字符串中的这些元素,请使用   AllowDecimalPoint和AllowLeadingSign标志,或使用复合样式   包括这些单独的旗帜。

答案 1 :(得分:1)

return (byte)(Decimal.Parse(val, NumberStyles.AllowExponent) * 100);