功能
基本的加减乘除
倒数、平方、开方、百分数计算、科学计数法
回退、清屏
表达式和计算结果两行显示…
运行环境
vs2019
项目截图
部分代码
//功能函数
void CCalDlg::isZero() {
UpdateData(TRUE);
int num0 = _ttof(m_result);
if (num0==0 && m_result.Find('.') == -1) {
m_result = "";
}
}
void CCalDlg::SaveValue1() {
UpdateData(TRUE);
m_number1 = _ttof(m_result); //CString=>浮点数
m_result = "";
UpdateData(FALSE);
}
void CCalDlg::calculator() {
UpdateData(TRUE);
m_number2 = _ttof(m_result);
double i = 0.0;
switch (m_isign) {
case 0:
i = m_number1 + m_number2; break;
case 1:
i = m_number1 - m_number2; break;
case 2:
i = m_number1 * m_number2; break;
case 3:
if (m_number2 == 0.0) {
i = m_number1;
m_result = "除数不能为0";
UpdateData(FALSE);
return;
}
else {
i = m_number1 / (double)m_number2; break;
}
case 4:
i = (m_number1*0.01); break;
}
if (i - int(i) <= 1e-5)
m_result.Format(_T("%d"), (int)i);
else
m_result.Format(_T("%lf"), i);
if (m_result.GetLength() > 15) {
m_result.Format(_T("%e"), i);
}
UpdateData(FALSE);
m_number1 = i;
m_number2 = 0.0;
}
//小数点
void CCalDlg::OnBnClickedButton3()
{
// TODO: 在此添加控件通知处理程序代码
UpdateData(TRUE);
if (m_result.Find('.') == -1) {
m_result += '.';
//m_display += '.';
}
UpdateData(FALSE);
}
//等号
void CCalDlg::OnBnClickedButton4()
{
// TODO: 在此添加控件通知处理程序代码
//按下平方开放,就会calFlag=true, ===>不要拼接
//当下等号键,flag=true,后面再按等号键时,不要拼接
UpdateData(TRUE);
if (!calFlag) {
m_display += m_result;
}
UpdateData(FALSE);
flag = true;
calFlag = false;
calculator();
}
//加号
void CCalDlg::OnBnClickedButton8()
{
// TODO: 在此添加控件通知处理程序代码
UpdateData(TRUE);
m_display = "";
m_display += m_result;
m_display += '+';
UpdateData(FALSE);
SaveValue1();
m_isign = 0;
flag = false;
calFlag = false;
}
//减号
void CCalDlg::OnBnClickedButton12()
{
// TODO: 在此添加控件通知处理程序代码
UpdateData(TRUE);
m_display = "";
m_display += m_result;
m_display += '-';
UpdateData(FALSE);
SaveValue1();
m_isign = 1;
flag = false;
calFlag = false;
}
//乘号
void CCalDlg::OnBnClickedButton16()
{
// TODO: 在此添加控件通知处理程序代码
UpdateData(TRUE);
m_display = "";
m_display += m_result;
m_display += '*';
UpdateData(FALSE);
SaveValue1(