将DataRow值转换为float

时间:2015-07-07 02:49:48

标签: c# casting datarow

我正在使用DataRow,我希望将行中的每个值除以一个数字(取自同一行的单元格)。我一直在寻找将值转换为float的方法,例如从this线程转换,但是转换给了我"指定的强制转换无效"错误。

List<DataTable> tblsol = new List<DataTable>();
DataTable now = tblsol.Last();

while (true)
        {
            DataRow fb = now.Rows[v];
            DataRow fb2 = now.Rows[w];
            float akun = (float)fb[fb.Table.Columns.Count - 1] /
            (float)fb[u];
            if (akun > (float)fb2[fb2.Table.Columns.Count - 1] /
            (float)fb2[u])
            {
                if (w == now.Rows.Count - 1) { v = w; break; }
                else { v++; w++; }
            }
            else 
            {
                if (w == now.Rows.Count - 1) { break; }
                else { w++; }

            }
        }

        DataRow bk = now.Rows[v];

        float angkun = Convert.ToSingle(bk[u]);
        for (int dc = 1; dc < now.Columns.Count;dc++)
        {
            bk[dc] = Convert.ToSingle(bk[dc]) / angkun;
        }

我使用了2种方法将值转换为float(使用Convert.toSingle和cast),但两种方式都给了我错误。还有什么我可以做的吗?或者我的代码可能有问题吗?
附: tblSol不为空,所有变量都已声明。

3 个答案:

答案 0 :(得分:1)

尝试float.Parse,但你需要将datarow转换为dynamic / string类型才能兼容:

var test = (dynamic)fb[fb.Table.Columns.Count - 1];
float boat = float.Parse(test);

使用float.Parse

的类似内容

答案 1 :(得分:1)

您可以尝试将此转换为String

float akun = float.Parse(fb[fb.Table.Columns.Count - 1].ToString()) /
        float.Parse(fb[u].ToString());

答案 2 :(得分:1)

如我的评论中所述,请先尝试将相关列投射到Decimal。当从DataRow实例的列访问数据时,它是显式支持的DataType之一;有效类型列在MSDN DataColumn Reference page