将 DataRow 值转换为浮点数
Casting DataRow value into float
我正在使用 DataRow
,我想用数字(取自同一行的单元格)除以行中的每个值。我一直在寻找将值转换为浮点数的方法,例如来自 this 线程,但是转换给我 "Specified cast is not valid" 错误。
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 种方法将值转换为浮点数(使用 Convert.toSingle
和转换),但这两种方法都给了我错误。还有什么我可以做的吗?或者我的代码有问题吗?
p.s。 tblSol
不为空,所有变量都已声明。
尝试 float.Parse,但您需要将数据行转换为 dynamic/string 类型才能兼容:
var test = (dynamic)fb[fb.Table.Columns.Count - 1];
float boat = float.Parse(test);
或类似的东西使用 float.Parse
你可以这样转换成String
后试试,
float akun = float.Parse(fb[fb.Table.Columns.Count - 1].ToString()) /
float.Parse(fb[u].ToString());
如我的评论所述,请先尝试将相关列转换为 Decimal
。从 DataRow 实例的列访问数据时,它是明确支持的数据类型之一; MSDN DataColumn Reference page
中列出了有效类型
我正在使用 DataRow
,我想用数字(取自同一行的单元格)除以行中的每个值。我一直在寻找将值转换为浮点数的方法,例如来自 this 线程,但是转换给我 "Specified cast is not valid" 错误。
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 种方法将值转换为浮点数(使用 Convert.toSingle
和转换),但这两种方法都给了我错误。还有什么我可以做的吗?或者我的代码有问题吗?
p.s。 tblSol
不为空,所有变量都已声明。
尝试 float.Parse,但您需要将数据行转换为 dynamic/string 类型才能兼容:
var test = (dynamic)fb[fb.Table.Columns.Count - 1];
float boat = float.Parse(test);
或类似的东西使用 float.Parse
你可以这样转换成String
后试试,
float akun = float.Parse(fb[fb.Table.Columns.Count - 1].ToString()) /
float.Parse(fb[u].ToString());
如我的评论所述,请先尝试将相关列转换为 Decimal
。从 DataRow 实例的列访问数据时,它是明确支持的数据类型之一; MSDN DataColumn Reference page