先贴上主要代码: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);
}貌似也不行    求大神们照顾。

解决方案 »

  1.   

    微软的com变量中有个叫VARIANT,你赋值后可以使用changeType函数,强制类型转换,你想改什么都可以,日期,字符串,整型,只要成功,都可以,这么简单的事让微软帮你做吧
      

  2.   

    请问
    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就不行了  求大神们帮看看代码。