用 MFC 在写一个计算器,想设计最大数为 15 个字,但是当含有负号和小数点的时候没关系。
所以我就分为了几种情况
小于 16 位的时候 直接加
等于 16 位的时候 判断出了小数点或者负号在的时候 通过 ,否则报个错
等于 17 位的时候 小数点和符号都在的时候通过,否则报错
大于 17 位的时候 报错
debug 的时候 16 位的数字依然就已经可以四则运算了。。
怎么改改呢。。
void CMFCApplication1jisuanqiDlg::OnBnClickedButtonplus()
{
// TODO: ここにコントロール通知ハンドラー コードを追加します。
CString cs;
GetDlgItemText(IDC_EDITscreen, cs);
num1 = _tstof(cs);//double num1 = atof((LPSTR)(LPCTSTR)cs.GetBuffer(cs.GetLength()));
if (cs.GetLength() < 16)
{
opt = "+";
SetDlgItemText(IDC_EDITscreen, _T(""));
}
if (cs.GetLength() == 16)
{
if (cs.Find(_T(".")) || cs.Find(_T("-")))
{
opt = "+";
SetDlgItemText(IDC_EDITscreen, _T(""));
}
else
{
SetDlgItemText(IDC_EDITscreen, _T("エラー、入力桁数は1 5位です"));
}
}
if (cs.GetLength() == 17)
{
if (cs.Find(_T(".")) && cs.Find(_T("-")))
{
opt = "+";
SetDlgItemText(IDC_EDITscreen, _T(""));
}
else
{
SetDlgItemText(IDC_EDITscreen, _T("エラー、入力桁数は1 5位です"));
}
}
if (cs.GetLength() > 17)
{
SetDlgItemText(IDC_EDITscreen, _T("エラー、入力桁数は1 5位です"));
}
}
所以我就分为了几种情况
小于 16 位的时候 直接加
等于 16 位的时候 判断出了小数点或者负号在的时候 通过 ,否则报个错
等于 17 位的时候 小数点和符号都在的时候通过,否则报错
大于 17 位的时候 报错
debug 的时候 16 位的数字依然就已经可以四则运算了。。
怎么改改呢。。
void CMFCApplication1jisuanqiDlg::OnBnClickedButtonplus()
{
// TODO: ここにコントロール通知ハンドラー コードを追加します。
CString cs;
GetDlgItemText(IDC_EDITscreen, cs);
num1 = _tstof(cs);//double num1 = atof((LPSTR)(LPCTSTR)cs.GetBuffer(cs.GetLength()));
if (cs.GetLength() < 16)
{
opt = "+";
SetDlgItemText(IDC_EDITscreen, _T(""));
}
if (cs.GetLength() == 16)
{
if (cs.Find(_T(".")) || cs.Find(_T("-")))
{
opt = "+";
SetDlgItemText(IDC_EDITscreen, _T(""));
}
else
{
SetDlgItemText(IDC_EDITscreen, _T("エラー、入力桁数は1 5位です"));
}
}
if (cs.GetLength() == 17)
{
if (cs.Find(_T(".")) && cs.Find(_T("-")))
{
opt = "+";
SetDlgItemText(IDC_EDITscreen, _T(""));
}
else
{
SetDlgItemText(IDC_EDITscreen, _T("エラー、入力桁数は1 5位です"));
}
}
if (cs.GetLength() > 17)
{
SetDlgItemText(IDC_EDITscreen, _T("エラー、入力桁数は1 5位です"));
}
}