0

我有以下 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;
    }

这是爆炸,因为从其中一个单元格(val变量)读取的值为:“5.5555555555555552E-2”

它在这条线上爆炸:

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

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

解决此问题的最佳方法是什么,以便我可以读取值?

4

2 回答 2

2

尝试这个:

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

Decimal.Parse Method (String, NumberStyles, IFormatProvider)

NumberStyles.AllowExponentAllowExponent是 的子集NumberStyles.Float

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

于 2012-06-06T22:26:21.183 回答
1
return (byte)(Decimal.Parse(val, NumberStyles.AllowExponent) * 100);
于 2012-06-06T23:08:20.577 回答