我有以下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);
错误:输入字符串的格式不正确。
解决这个问题的最佳方法是什么,这样我才能读到价值?
答案 0 :(得分:2)
试试这个:
return (byte)(Decimal.Parse(val, System.Globalization.NumberStyles.Float, System.Globalization.CultureInfo.InvariantCulture));
Decimal.Parse Method (String, NumberStyles, IFormatProvider)
NumberStyles.AllowExponent (AllowExponent
是NumberStyles.Float
的一个子集)
表示数字字符串可以是指数表示法。该 AllowExponent标志允许解析的字符串包含指数 以“E”或“e”字符开头,后跟一个 可选的正号或负号和整数。换句话说,它 成功解析nnnExx,nnnE + xx和nnnE-xx形式的字符串。 它不允许小数点分隔符或有效数字符号或 尾数;要允许解析字符串中的这些元素,请使用 AllowDecimalPoint和AllowLeadingSign标志,或使用复合样式 包括这些单独的旗帜。
答案 1 :(得分:1)
return (byte)(Decimal.Parse(val, NumberStyles.AllowExponent) * 100);