sorry!写错了,我是想把"0"去掉,只留下"12"和"12.4".

解决方案 »

  1.   

    当我不知该用哪个函数的时候,通常是自已写一个://------------------------------------------------------------------------
    // 函数名称; TrimRZero
    // 功能说明: 剪去数字字符串右边的无效0,如"3.2000"剪为"3.2"
    // 参数说明: str 要修剪的字符串
    // 返回值: 修剪后的字符串
    //------------------------------------------------------------------------
    CString TrimRZero(const char* str)
    {
    int len;
    int resultStrLen;
    resultStrLen=len=strlen(str);
    char m_chTemp;
    while(len>=1){
    m_chTemp=str[len-1];
    if(m_chTemp=='0')
    resultStrLen--;
    else{   //只要本字符不是"0",就不再往前检查
    if(m_chTemp=='.') //如果是".",则去掉它,以保证返回值的最后一个字符不是"."
    resultStrLen--;
    break;
    }
    len--;
    }///End of while
    //如果str="0",那么resultStrlen就会是0,把它设成1
    if (resultStrLen< 1)resultStrLen=1;
    CString res;
    res=str;
    return res.Left (resultStrLen);
    }
      

  2.   

    可以利用函数  char *_gcvt( double value, int digits, char *buffer );
    Trailing zeros may be suppressed in the conversion.
    所以可以先把串“12.8952000”转换成double型,再调用_gcvt函数,将double型转换成字符串时去零的特点,就可以实现截掉有效数字后的零,程序代码如下:
    #include <stdlib.h>char num[]="12.5400";
    double aa= atof( num );   ////////字符串变成double数据
    char aa[20];
    _gcvt( a, sizeof(a), aa);///////数据转换成字符串
    printf("%s  %f\n",num,a);////////输出结果
    printf("%s  %s\n",num,aa);