我有一个浮点值: ( data->val
),它可能是三个可能的浮点精度:,%.1f
我将如何格式化它以仅显示必要的小数点数?例如:%.2f
%.3f
CString::Format
CString sVal;
sVal.Format(L"%.<WHAT GOES HERE?>f", data->val);
if(stValue)
stValue->SetWindowText(sVal);
就像我不希望格式化字符串末尾有任何额外的零一样。
我有一个浮点值: ( data->val
),它可能是三个可能的浮点精度:,%.1f
我将如何格式化它以仅显示必要的小数点数?例如:%.2f
%.3f
CString::Format
CString sVal;
sVal.Format(L"%.<WHAT GOES HERE?>f", data->val);
if(stValue)
stValue->SetWindowText(sVal);
就像我不希望格式化字符串末尾有任何额外的零一样。
如果您知道您想要的精度,只需使用%.*f
并将精度作为整数参数提供给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);
它是前一段时间的,但也许这会工作......
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')
但很危险,因为你可能有“。” 在末尾...