我做了一个简单的2操作数的四则运算器,运算结果在编辑框中显示,当结果为整数时,后面总是带个小数点,这个小数点是怎么来的,能去掉吗?

解决方案 »

  1.   

    编辑框映射的变量是什么类型的?
    如果CString型的,看是不是在转换时出了问题?
      

  2.   

    是CString型的
    _gcvt(dfresult,10,cBuffer);
    m_RESULT_EDIT=(LPCTSTR)cBuffer;
    怎样才能正确转换呢?
      

  3.   

    gcvt函数把一个浮点值转换成一个字符串(包括一个小数点和可能的符号字节)并存储该字符串在buffer中应该是这里出了问题
      

  4.   

    转换没有问题。
    加一个去掉小数点的操作就行了。
    先判断小数点后是否还有东西,如果没有了,就去掉。
    加上这几句吧。int i=strlen(cBuffer)-1; 
    if(cBuffer[i]=='.')
        cBuffer[i]=0;
      

  5.   

    #include <float.h>double dbData = 12.0;
    TCHAR szBuffer[128] = {0};
    _stprintf(szBuffer, _T("%.*g"), DBL_DIG, dbData);
    TRACE(_T("%s\n"), szBuffer);
      

  6.   


    int i=strlen(cBuffer)-1; 
    if(cBuffer[i]=='.')
        cBuffer[i]=0;加了,但还是去不掉
      

  7.   

    #include <float.h>double dbData = 12.0;
    TCHAR szBuffer[128] = {0};
    _stprintf(szBuffer, _T("%.*g"), DBL_DIG, dbData);
    TRACE(_T("%s\n"), szBuffer); 
     
    这是什么?
      

  8.   

    怎么会呢?
    我的全部代码。我在VC6上试验过了。去掉了。 char buffer[100];
    gcvt( 100.0, 7, buffer );
    AfxMessageBox(buffer);//这里是有点的。
    int i=strlen(buffer)-1; 
    if(buffer[i]=='.')
    buffer[i]=0;
    m_abc=buffer;
    UpdateData(FALSE);//到了编辑框里就没有点了。
    你的cBuffer是不是也是CString型的?
      

  9.   

    此法正解%.*g的标准化输出。
    输出有效数字,把后补0去掉。
    简单点可以写成这个样子:
    m_RESULT_EDIT.Format("%g", dbData);
      

  10.   


    解决了。之前说不行是因为放错地方了。这是修改之后的代码:
    _gcvt(dfresult,10,cBuffer); int i=strlen(cBuffer)-1; 
        if(cBuffer[i]=='.')cBuffer[i]=0; m_RESULT_EDIT=(LPCTSTR)cBuffer; UpdateData(FALSE)