比如能通过a,b算出c,d,也能从c,d算到a,b,网上找了下,如果文本框相应变量是double型的话我的思路是先转化成CString用Format控制位数,但是再从CString就很难变回double了,GetBuffer返回的是wchar_t*型的指针,而atof()的形参是char*类型。试了好久没想出办法。
如果把文本框相应变量改成CString类型,同样需要把CString转化成double类型。
求教有没有什么比较好的方法。

解决方案 »

  1.   

    控制位数可不可以这样:
    2位小数点:
    int v;
    v=(int)(a*100);
    a=(float)v/100.0f;//这样就可以让小数点变成两位了.至于编辑框显示(关联变量是float型),应该不会显示这样格式:123.12000,应该这么显示:123.12,你试试是不是这样
      

  2.   

    那怎么把CString再转化成double呢?
    比如关联变量是double型的m_Data;
    m_Data=123.45678;
    CString str_Data;
    str_Data.Format("%.2lf",m_Data);
    但是这个CString不能直接显示在m_Data对应的对话框上,怎么把它转化成m_Data呢?
      

  3.   

    那怎么把CString再转化成double呢?
    比如关联变量是double型的m_Data;
    m_Data=123.45678;
    CString str_Data;
    str_Data.Format("%.2lf",m_Data);
    但是这个CString不能直接显示在m_Data对应的对话框上,怎么把它转化成m_Data呢?::atoi
    ::atof
      

  4.   

    error C2664: “atof”: 不能将参数 1 从“CString”转换为“const char *”
    1>          没有可用于执行该转换的用户定义的转换运算符,或者无法调用该运算符
      

  5.   

    CString str("123.456 "); 
    double d = 1.0;
    _stscanf(str, _T("%lf "), &d);
      

  6.   

    楼主我也遇到了跟你一样的问题我的成员变量是float型的
    CEdit* pEdit1=(CEdit*)GetDlgItem(IDC_EDIT1);
    pEdit1->SetWindowText(" "+str);
    另加一个指向编辑框控件的指针(原先我一直想为编辑框添加一个CEdit类型的成员变量,结果都不如意),这样就能回显你保留小数位数的数据。(不需要再讲CString类型转换成Double类型)