先贴上主要代码:extern double x=0,y=0;
extern int z=0;
extern CString str="";
void savenum(double i)
{
if(x!=0)
x=10*x+i;
else
x=i;
}
BOOL CDlgJiSuanQi::OnInitDialog()
{
CDialog::OnInitDialog();
m_fShowValue=0;
UpdateData(false);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}void CDlgJiSuanQi::OnButton0()
{
savenum(0);
m_fShowValue = x;
UpdateData(false);
}void CDlgJiSuanQi::OnButton1()
{
savenum(1);
m_fShowValue = x;
UpdateData(false);
}void CDlgJiSuanQi::OnButton2()
{
savenum(2);
m_fShowValue = x;
UpdateData(false);
}void CDlgJiSuanQi::OnButton3()
{
savenum(3);
m_fShowValue = x;
UpdateData(false);
}void CDlgJiSuanQi::OnButton4()
{
savenum(4);
m_fShowValue = x;
UpdateData(false);
}void CDlgJiSuanQi::OnButton5()
{
savenum(5);
m_fShowValue = x;
UpdateData(false);
}void CDlgJiSuanQi::OnButton6()
{
savenum(6);
m_fShowValue = x;
UpdateData(false);
}void CDlgJiSuanQi::OnButton7()
{
savenum(7);
m_fShowValue = x;
UpdateData(false);
}void CDlgJiSuanQi::OnButton8()
{
savenum(8);
m_fShowValue = x;
UpdateData(false);
}void CDlgJiSuanQi::OnButton9()
{
savenum(9);
m_fShowValue = x;
UpdateData(false);
}void CDlgJiSuanQi::OnButtonAdd()
{
if(y!=0)
y=y+x;
else
y=x;
x=0;
z=1;
}void CDlgJiSuanQi::OnButtonSub()
{
if(y!=0)
y=y-x;
else
y=x;
x=0;
z=2;
}void CDlgJiSuanQi::OnButtonStart()
{
if(y!=0)
y=y*x;
else
y=x;
x=0;
z=3;
}void CDlgJiSuanQi::OnButtonOther()
{
if(y!=0)
y=y/x;
else
y=x;
x=0;
z=4;
}void CDlgJiSuanQi::OnButtonEquel()
{
switch(z){
case 1:
y=x+y;
break;
case 2:
y=y-x;
break;
case 3:
y=y*x;
break;
case 4:
y=y/x;
break;
}
m_fShowValue=y;
UpdateData(false);
x=y;
y=0;
}void CDlgJiSuanQi::OnBUTTONDot()
{
str.Format("%f",x);
str=str+".";
x=atof(str);
m_fShowValue=x;
UpdateData(false);
}
因为我一直输出的是double类型,小鸟现在的思路是用字符串来实现添加个小数点,但是字符串和double型数据转换后又会牵扯到之前各个按钮的实现,而且我这个
void CDlgJiSuanQi::OnBUTTONDot()
{
str.Format("%f",x);
str=str+".";
x=atof(str);
m_fShowValue=x;
UpdateData(false);
}貌似也不行 求大神们照顾。
extern int z=0;
extern CString str="";
void savenum(double i)
{
if(x!=0)
x=10*x+i;
else
x=i;
}
BOOL CDlgJiSuanQi::OnInitDialog()
{
CDialog::OnInitDialog();
m_fShowValue=0;
UpdateData(false);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}void CDlgJiSuanQi::OnButton0()
{
savenum(0);
m_fShowValue = x;
UpdateData(false);
}void CDlgJiSuanQi::OnButton1()
{
savenum(1);
m_fShowValue = x;
UpdateData(false);
}void CDlgJiSuanQi::OnButton2()
{
savenum(2);
m_fShowValue = x;
UpdateData(false);
}void CDlgJiSuanQi::OnButton3()
{
savenum(3);
m_fShowValue = x;
UpdateData(false);
}void CDlgJiSuanQi::OnButton4()
{
savenum(4);
m_fShowValue = x;
UpdateData(false);
}void CDlgJiSuanQi::OnButton5()
{
savenum(5);
m_fShowValue = x;
UpdateData(false);
}void CDlgJiSuanQi::OnButton6()
{
savenum(6);
m_fShowValue = x;
UpdateData(false);
}void CDlgJiSuanQi::OnButton7()
{
savenum(7);
m_fShowValue = x;
UpdateData(false);
}void CDlgJiSuanQi::OnButton8()
{
savenum(8);
m_fShowValue = x;
UpdateData(false);
}void CDlgJiSuanQi::OnButton9()
{
savenum(9);
m_fShowValue = x;
UpdateData(false);
}void CDlgJiSuanQi::OnButtonAdd()
{
if(y!=0)
y=y+x;
else
y=x;
x=0;
z=1;
}void CDlgJiSuanQi::OnButtonSub()
{
if(y!=0)
y=y-x;
else
y=x;
x=0;
z=2;
}void CDlgJiSuanQi::OnButtonStart()
{
if(y!=0)
y=y*x;
else
y=x;
x=0;
z=3;
}void CDlgJiSuanQi::OnButtonOther()
{
if(y!=0)
y=y/x;
else
y=x;
x=0;
z=4;
}void CDlgJiSuanQi::OnButtonEquel()
{
switch(z){
case 1:
y=x+y;
break;
case 2:
y=y-x;
break;
case 3:
y=y*x;
break;
case 4:
y=y/x;
break;
}
m_fShowValue=y;
UpdateData(false);
x=y;
y=0;
}void CDlgJiSuanQi::OnBUTTONDot()
{
str.Format("%f",x);
str=str+".";
x=atof(str);
m_fShowValue=x;
UpdateData(false);
}
因为我一直输出的是double类型,小鸟现在的思路是用字符串来实现添加个小数点,但是字符串和double型数据转换后又会牵扯到之前各个按钮的实现,而且我这个
void CDlgJiSuanQi::OnBUTTONDot()
{
str.Format("%f",x);
str=str+".";
x=atof(str);
m_fShowValue=x;
UpdateData(false);
}貌似也不行 求大神们照顾。
extern double x=0,y=0;
extern double b=0,d=0;
extern int z=0,a=0,c=0;
extern CString str="";
extern bool dot_flag=false;
void savenum(double i)
{
if(x!=0)
x=10*x+i;
else
x=i;
}
void savedotnum(double i)
{
a=int (x);
b=x-a;
d=x-a;
while(d!=0){
d=d*10;
c=int (d);
d=d-c;
i=i/10;
}
x=a+b+i/10;
}
void CDlgJiSuanQi::OnButton1()
{
if (dot_flag==false)
{
savenum(1);
m_fShowValue = x;
UpdateData(false);
}
else if(dot_flag==true)
{
savedotnum(1);
m_fShowValue = x;
UpdateData(false);
}
}
void CDlgJiSuanQi::OnBUTTONDot()
{
if(dot_flag==false)
{
GetDlgItemText(IDC_EDIT_SHOW,str);
GetDlgItem(IDC_EDIT_SHOW)->SetWindowText(str+=".");
dot_flag=true;
}
}现在已经可以实现小数点,但是只能输入一位小数点,比如我输入11.1 可以 但是想输入11.11就不行了 求大神们帮看看代码。