我有一个浮点值:(data->val
)可能有三个可能的浮点精度:%.1f
,%.2f
和%.3f
我将如何使用{{格式化它1}}到dsiplay只需要小数点数吗?例如:
CString::Format
因为我不想在格式化字符串的末尾添加任何其他零。
答案 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')
但危险因为你可能有'。'最后...