2013-04-21 115 views
-4

我是初學者,我已經在C#(Windows窗體)中做了計算器,只有一個問題發生,所以plz幫助我。請幫助在Windows窗體計算器

問題是,當我把0/0 =然後在此行

m_res /= decimal.Parse(m_store[i + 1].ToString()); 

else if (m_store[i].ToString() == "/") 
{ 
    //Textbox.Text = ""; 
    m_res /= decimal.Parse(m_store[i + 1].ToString()); 
    TextBox2.Text = m_res.ToString(); 
} 
+3

你不能除以零。用任何語言。或者數學,就此而言。你如何分配一些東西?添加一個檢查來查看該值是否爲0並提醒用戶。 – Tim 2013-04-21 10:18:49

回答

3

你可能想我的代碼崩潰是

decimal div; 
decimal.TryParse(m_store[i + 1].ToString(), out div); 
if(div != null && div != 0) 
    m_res /= div; 

它的基本的數學定義,沒有什麼可以劃分由0

編輯:沒有測試這一點,但我相信它會工作,更有效

decimal div; 
if(decimal.TryParse(m_store[i + 1].ToString(), out div) && div != 0) 
    m_res /= div; 
+0

爲什麼第二塊代碼更「高效」? – 2013-04-21 11:32:17

+0

@Cody Gray - 效率更高,因爲您只需檢查tryparse的結果而不是兩次 – Sayse 2013-04-21 13:45:50

0

提示:

要零異常避免鴻溝,你顯然必須覈對零值的 分母。

和:

這個數字支票會比其在運行時拋出 異常快得多。

1

問題是你不能以零除以。

嘗試類似:

decimal d = decimal.Parse(m_store[i + 1].ToString()); 
if (d.Equals(0)) 
    MessageBox("Cannot divide by zero"); 
else 
    mres /= d;