具有变量float精度的CString.Format

时间:2012-11-05 11:59:07

标签: c++ string mfc floating-point

我有一个浮点值:(data->val)可能有三个可能的浮点精度:%.1f%.2f%.3f我将如何使用{{格式化它1}}到dsiplay只需要小数点数吗?例如:

CString::Format

因为我不想在格式化字符串的末尾添加任何其他零。

2 个答案:

答案 0 :(得分:7)

如果您知道精度,只需使用%.*f and supply the precision as an integer argument to CString::Format即可。如果您想要最简单的有效表示,请尝试%g

int precision = 2; // whatever you figure the precision to be
sVal.Format(L"%.*f", precision, data->val);
// likely better: sVal.Format(L"%g", data->val);

答案 1 :(得分:1)

它不久前,但也许这会奏效......

CString getPrecisionString(int len)
{
   CString result;
   result.format( "%s%d%s","%.", len, "f" );
   return result;
}

// somewhere else
CString sVal;

sVal.Format(getPrecisionString(2), data->val);
if(stValue)
    stValue->SetWindowText(sVal);

另一种方法是,在用

添加%.3f值之后切断'0'
sVal.trimEnd('0')

但危险因为你可能有'。'最后...