2013-04-25 96 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