You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C# WinForms计算器减法变加法、乘除报FormatException错误问题求解

问题根因

  • 所有运算符点击事件中,你将运算符符号直接赋值给了txtBox.Text,这是核心错误:
    1. 加法场景下,C#的Convert.ToDecimal()支持解析带+前缀的数字字符串(比如+123可以正常转为123),所以加法功能可以正常运行
    2. 减法场景下,用户输入数字后txtBox的内容会变成-数字,计算时执行保存的数字 - 负数,结果等价于两个数相加,就出现了减法变加法的问题
    3. 乘除场景下,*、/不属于合法的数字字符串前缀,Convert.ToDecimal()无法解析*123、/123这类字符串,直接抛出System.FormatException异常

修复方案

直接删掉所有运算符点击事件中给txtBox.Text赋值运算符的代码即可,如果你需要展示已选择的运算符,可以将运算符拼接显示在上方的txtUpperBox中。

修复后的运算符点击事件示例:

private void btnPlus_Click(object sender, EventArgs e)
{
    SaveNumber();
    txtBox.Clear();
    savedOperator = "+";
    // 删掉原来的 txtBox.Text = "+"; 代码,若要显示运算符可以加下面这行
    txtUpperBox.Text += " +";
}

private void btnMinus_Click(object sender, EventArgs e)
{
    SaveNumber();
    txtBox.Clear();
    savedOperator = "-";
    txtUpperBox.Text += " -";
}

private void btnTimes_Click(object sender, EventArgs e)
{
    SaveNumber();
    txtBox.Clear();
    savedOperator = "*";
    txtUpperBox.Text += " *";
}

private void btnDivide_Click(object sender, EventArgs e)
{
    SaveNumber();
    txtBox.Clear();
    savedOperator = "/";
    txtUpperBox.Text += " /";
}

额外优化建议

可以把Calculation方法里的多个独立if改为if-else if结构,避免不必要的分支判断,同时补充除数为0的异常拦截:

private void Calculation()
{
    decimal answer;
    decimal currentNumber = Convert.ToDecimal(txtBox.Text);

    if (savedOperator == "+")
    {
        answer = savedNumber + currentNumber;
    }
    else if (savedOperator == "-")
    {
        answer = savedNumber - currentNumber;
    }
    else if (savedOperator == "*")
    {
        answer = savedNumber * currentNumber;
    }
    else if (savedOperator == "/")
    {
        if (currentNumber == 0)
        {
            txtBox.Text = "除数不能为0";
            savedOperator = "";
            txtUpperBox.Text = "";
            return;
        }
        answer = savedNumber / currentNumber;
    }
    else
    {
        return;
    }
    
    txtBox.Text = answer.ToString();
    savedOperator = "";
    txtUpperBox.Text = "";
}

内容的提问来源于stack exchange,提问作者Cuckboi69

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 08:09:02