DataGridView无效转换异常

本文关键字:异常 转换 无效 DataGridView | 更新日期: 2023-09-27 18:10:51

我试图根据一个单元格的值计算另一个单元格值的百分比。数据看起来像这样,只是更大,但思想是一样的:

     c1    c2    c3   tot
r1    1     0     3     4
r2    1     2     1     4  
r3    0     0     1     1
tot   2     2     5     

任何单元格中的所有值都只能是整数。我正在尝试创建一个表,看起来像这样:

     c1    c2    c3
r1    0.25  0     0.75
r2    0.25  0.50  0.25
r3    0     0     1

我不需要帮助创建表——我实际上可以创建表——我只是无法获得正确的类型转换,以便用正确的(百分比)数据填充表。我有以下代码:

for (int i = 7; i < 12; i++)
{
  for (int j = 0; j < 7; j++)
  {
    double hold1 = (double)gridHolder.Rows[i - 7].Cells[j + 1].Value;
    double hold2 = (double)gridHolder.Rows[i - 7].Cells[8].Value;
    gridHolder.Rows[i].Cells[j + 1].Value = hold1 / hold2;
  }
}

gridHolder是表的名称,如果不是很明显的话。

当我运行它时,我得到这个异常:

An unhandled exception of type 'System.InvalidCastException' occurred in PCHG Simulator.exe
Additional information: Specified cast is not valid.

如何将单元格的内容转换为decimaldouble,以便除法将是十进制结果?如果你还能解释一下如何将结果格式化为小数点后2位,那就太好了,但我相信我能弄清楚。

编辑:我不知道是否值得注意,但是,如果我为每个cast为int:

int hold1 = (int)gridHolder.Rows[i - 7].Cells[j + 1].Value;
int hold2 = (int)gridHolder.Rows[i - 7].Cells[8].Value;

可以很好地工作,除了一个明显的问题,即除法变成整数除法而不是十进制除法。因此,问题显然是我试图转换为双精度的方式。

DataGridView无效转换异常

尝试使用Convert.ToDouble(value)

相关文章: