-4

我是初学者,我用 C#(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();
}
4

3 回答 3

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;
于 2013-04-21T10:21:08.360 回答
1

问题是你永远不能除以零。

尝试类似:

decimal d = decimal.Parse(m_store[i + 1].ToString());
if (d.Equals(0))
    MessageBox("Cannot divide by zero");
else
    mres /= d;
于 2013-04-21T10:28:06.943 回答
0

小费:

为避免除以零异常,您显然必须根据零值检查分母。

和:

这种数字检查将比在运行时抛出异常快得多。

于 2013-04-21T10:22:12.600 回答