Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 请在Windows窗体计算器中提供帮助_C# - Fatal编程技术网

C# 请在Windows窗体计算器中提供帮助

C# 请在Windows窗体计算器中提供帮助,c#,C#,我是初学者,我用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()); TextBo

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

你可能想要的是

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;
提示:

为了避免被零除的异常,您显然必须检查 零值的分母

以及:

这个数字检查比抛出异常要快得多 在运行时


问题是你永远不能被零除

尝试以下方法:

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

你不能被零除。用任何语言。或者数学。你怎么把东西一分为二?添加一个检查以查看值是否为0并提醒用户。为什么第二块代码更“有效”?@Cody Gray-它更有效,因为您只需检查tryparse的结果一次,而不是两次