C# 请在Windows窗体计算器中提供帮助
我是初学者,我用C#(Windows窗体)制作了计算器,只有一个问题发生,请帮助我 问题是,当我除以0/0=时,我的代码在这一行崩溃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
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的结果一次,而不是两次