如题,比如数字:123.0123456789 
转换后的字符串是“123.0123456789”  ,
再如 :123.10230000
要转换成“123.1023” .
mfc有没有现在的函数呢???
如果没有,怎么转换效率最好???
在些先谢谢啦...

解决方案 »

  1.   

    [size=16px]数字后面没用的0要去掉才行哦^_^[/size]
      

  2.   


    double d1=123.0123456789,d2=123.10230000;
    char buf[64];
    sprintf(buf,"%0.32f",d2);
    int n=strlen(buf)-1;
    while(n>=0&&buf[n]=='0')
    n--;
    buf[n+1]=0;
    printf(buf);
    printf("\n");
      

  3.   

    CSttring的Format()不行
    比如数字为 1.01
    转换后变成1.010000
    这不是我想要的,
    还有比如 1.23456789011222122222201000111111
    转换后变成 1.234568
    这也不是我想要的,
    你可能说给个很长的格式如0.100lf这样的,之后再把没用的0去掉
    除了这样的办法还有没有别的呢???
    这个方法不想用
      

  4.   

    sstream也可以,不过性能没那么高
      

  5.   


    浮点数转换的小数位数可以自己指定的
    CString str;
    float fdata = 1.001000;
    str.Format("%.3f", fdata); // 三位小数,转换后str 就是 "1.001"了
    str.Format("%.5", fdata); // 五位小数,转换后str 就是 "1.00100"了
    好好研究下吧,Format的功能强大着呢
      

  6.   


    这样的format也不是没有它的用处,不过对我来说这样的功能不能没足我的要求啊
    因为我要转换的float型的后面小数点是不定的,可有有可以没有
    所在,怎么可能对每个数字进行设定一个标准来转换呢???
    不要忘记了我要的结果是不要那么没用的0
    这样format就不能做到了
    除非它有一个auto什么的格式可以自动把没用的0去掉,这样就好啊
      

  7.   

    你都拿到转换后的字符串了,即使是str = _T("1.00100");
    你再自己把后面的零去掉就可以了,比如说
    int ReverseFind( TCHAR ch ) const;

    CString Left( int nCount ) const;可以实现这项功能,代码也比较简单
      

  8.   

    自己写的,对你可能行吧。
    函数接口为str,对str后面没用的0清除,如果遇到'.'也删除就行
    数字转换格式为:
    m_str.Format(_T("%lf"),m_integer); //把数字转换成字符串ClearZero(CString& str)
    {
    for(int i=str.GetLength()-1;i>=0;i--)
    {
    if(str[i]=='0') //最后有没用的0就清除
    {
    str.Delete(i,1); //删除0
    }
    else
    {
    if(str[i]=='.') //去掉没用的小数点
    str.Delete(i);
    break; //否则退出
    }
    }
    }
      

  9.   

    判断下小数点后面有几位,然后Format
      

  10.   

    format 不是有精度吗?
    m_str.Format(_T("%lf"),m_integer); //把数字转换成字符串 
      

  11.   

    m_str.Format(_T("%lf"),m_integer); //把数字转换成字符串用这个format后可以是可以,不过格式有点问题啊
    默认的只能是后六位小数点,可我想高上点精度的
    如果设置成str.Format(_T("0.50lf"),double);
    会出现问题,比如:
    实际数字是0.001,转换后结果变成:0.0010000000000000002
    用的就是str.Format(_T("0.50lf"),double);
    测试了double是0.001,已经对str进行了初始化
    为什么结果会变呢???
    再来一张:
      

  12.   

    format的格式设置有什么样的规定呢
    怎样设置才有效啊??
    就是说后后面的小点要保留多少位才不会出错啊
      

  13.   

    int id = 1.23
    std::ostringstream os; os << id;
    std::string  strValue= os.str();