浮点精度未格式化为字符串

时间:2019-04-17 12:13:40

标签: c++ string format precision

当我编写一个简单的wprintf函数并使用动词符号float向其传递一个L"%.2f"数字的双精度字符时,它只会在屏幕上打印一个“ f”而不是0.00格式的数字。

我希望获得帮助,因为我发现到处都只是说L"%.2f"是一种打印精度为两位十进制数字的数字的方法。

float duration = (float)((std::clock() - mTimer) / (float)(CLOCKS_PER_SEC / 1000));
wsprintf(message, L">> Speed: %.2f\r\n", duration);

这些是引起我头痛的两行...导致

>> Speed: f

被打印在控制台上。

我正在寻找的输出是这样:

>> Speed: 4000.00

2 个答案:

答案 0 :(得分:3)

函数wsprintf()(似乎是特定于Windows的)不支持浮点参数,您可以使用swprintf()(这是标准库函数)。

此外,wsprintf文档中有一条注释指出:

  

请勿使用。考虑改用以下功能之一:StringCbPrintf, StringCbPrintfEx, StringCchPrintf, or StringCchPrintfEx。请参阅安全注意事项。

答案 1 :(得分:0)

您可以做的是:

cout << fixed << setprecision(2) << message << ">> Speed : "<< duration << endl;