2013-04-25 113 views
1

我想根据一个单元格的值计算百分比到另一个单元格的值。数据是这样的,只有更大,但这个想法是一样的:DataGridView无效铸造异常

 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位小数,那会很好,但我相信我可以解决这个问题。

编辑:我不知道这是值得注意的,但是,如果我投的int每个:

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

它工作得很好,除了为师成为整数明显的问题分而不是十进制除法。所以问题很明显,我试图用双倍的方法。

回答

2

尝试使用Convert.ToDouble(value)

+0

哈哈哇。我希望这是一个简单的改变!谢谢!! :d – Matt 2013-04-25 04:56:42