float iSize=((float)(iAddr2-iAddr1));
CString strSize;
if (iSize>=1024*1024)
{
strSize.Format(L"%0.3f",iSize/1024/1024);
strSize=strSize.TrimRight(L"0");//不知Format还有这个功能不?
strSize=strSize.TrimRight(L".");
strSize+=L" MB";
}
else if (iSize>10240)//不是1024
{
strSize.Format(L"%0.2f",iSize/1024);
strSize=strSize.TrimRight(L"0");//不知Format还有这个功能不?
strSize=strSize.TrimRight(L".");
strSize+=L" KB";
}
else
{
strSize.Format(L"%0.2f",iSize);
strSize=strSize.TrimRight(L"0");//不知Format还有这个功能不?
strSize=strSize.TrimRight(L".");
strSize+=L" B";
}
我的代码很猥琐,一个float f=3.90000f;Format的时候保留小数点三位,如果有多余的0则去掉,不知Format还有这个功能不?或者用sprintf也可实现?

解决方案 »

  1.   

    float fVal = 3.901100f;
    CString tmp;
    tmp.Format(_T("%.3f"), fVal);
    CString str;
    str.Format(_T("%g"), _tcstod(tmp, NULL));
    AfxMessageBox(str);
      

  2.   

    float fVal = 3.901100f;
        CString tmp;
        tmp.Format(_T("%.3f"), fVal);
        CString str;
        str.Format(_T("%g"), _tcstod(tmp, NULL));
        if(str.GetLength()>tem.GetLength())
    {
    return tmp;
    }
    else
    return str;谁短取谁!
      

  3.   


    str.Format(_T("%g"), _tcstod(tmp, NULL));这一句画龙点睛.....