【问题标题】:How can i parse this data in C# that is coming from a data table如何在 C# 中解析来自数据表的这些数据
【发布时间】:2012-06-06 22:20:09
【问题描述】:

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

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

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

【问题讨论】:

    标签: c# excel parsing numbers decimal


    【解决方案1】:

    试试这个:

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

    Decimal.Parse Method (String, NumberStyles, IFormatProvider)

    NumberStyles.AllowExponentAllowExponentNumberStyles.Float的子集)

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

    【讨论】:

    • 当数字为 "0.5" 时,我现在遇到同样的错误。 .有什么建议吗?
    • @Ieora。编辑了我的答案,但是当有小数位的值时,为什么您认为它是一个字节?然后我建议返回DecimalDouble
    【解决方案2】:
    return (byte)(Decimal.Parse(val, NumberStyles.AllowExponent) * 100);
    

    【讨论】:

      猜你喜欢
      • 2016-12-08
      • 1970-01-01
      • 1970-01-01
      • 2017-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多