if (table.Rows[i][18] == DBNull.Value)
{
projects.Proportion = 0;
}
else
{
if (table.Rows[i][18].ToString().Contains("E"))
{
decimal data = 0.0M;
data = Convert.ToDecimal(decimal.Parse(table.Rows[i][18].ToString(), System.Globalization.NumberStyles.Float));
ah1 += Convert.ToDouble(data) * Convert.ToInt32(table.Rows[i][12].ToString());
}
else
{
ah1 += Convert.ToDouble(table.Rows[i][18]) * Convert.ToInt32(table.Rows[i][12].ToString());
}
projects.Proportion = ah1;
}
在读取空值的时候,最后一个else语句总是报错,数值类型错误。
建议先打印出来。看是什么东西。并且打印出长度。防止空白看不到。
然后使用DOUBLE.TRYPARSE()。这东西就可以了。
这样既知道了原因。也解决了报错的问题
不为空,不包含字符"E",那也不代表它就是double数据啊
那你要看里面到底是什么啊,是不是两个空格?
建议直接使用 double.TryParse();