c++MFC计算器的加法和除法有问题,其他功能正常,求指正


void CMFCApplication5Dlg::OnBnClickedAdd()
{
    SaveValue1();
    m_iSign = 0;
    // TODO: 在此添加控件通知处理程序代码
}
void CMFCApplication5Dlg::OnBnClickedDivide()
{
    SaveValue1();
    m_iSign = 3;
    // TODO: 在此添加控件通知处理程序代码
}

void CMFCApplication5Dlg::SaveValue1()
{
    UpdateData(TRUE);
    m_fNumber1 = atof(m_str);   //编辑框显示第一个操作数
    m_str = "";       //做完上步操作后将编辑框设置为空
    UpdateData(FALSE);
}

//计算,涉及到两个操作数,按下“=”时执行。包括“+”,“-”“×”“÷”“指数”
void CMFCApplication5Dlg::Calculator()
{
    UpdateData(TRUE);
    m_fNumber2 = atof(m_str);      //获得第二个操作数并显示在编辑框中
    double f = 0.0f;    //f必须初始化,用于保留计算结果
    switch (m_iSign)   //根据m_iSign标志跳转
    {
    case 0:
        f = m_fNumber1 + m_fNumber2;//加
        break;
    case 1:
        f = m_fNumber1 - m_fNumber2;//减
        break;
    case 2:
        f = m_fNumber1 * m_fNumber2;//乘
        break;
    case 3:
        if (m_fNumber2 == 0.0f)  //除法中分母不能为0,为0时需要进行如下操作
        {
            MessageBox("除数不能为0!");  //弹出提示消息框
            f = m_fNumber1;
            //除数为0时直接将第一个操作数赋给结果,表示第二个操作数不算,直接继续下一步操作
        }
        else
        {
            f = m_fNumber1 / m_fNumber2;//除
        }
        break;
    case 6:
        f = pow(m_fNumber1, m_fNumber2); //指数
        break;
    default:
        break;
    }

 

参考GPT和自己的思路:

根据提供的代码,加法和除法都需要先调用SaveValue1()函数来保存第一个操作数,然后才能执行计算操作。因此,可能出错的原因是在保存第一个操作数时出现了问题,或者是在计算时操作数的值不正确。

如果你能提供更具体的错误描述或代码片段,我可以更详细地帮助你确定问题的原因。