浮点精度不在字符串格式化

问题描述 投票:2回答:2

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

我希望得到一些帮助,因为我看起来只是说L"%.2f"是打印2位数精度的数字的方法。

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

这两条线引起了我的头痛......它们导致了

>> Speed: f

被打印在控制台上。

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

>> Speed: 4000.00
c++ string format precision
2个回答
3
投票

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

此外,wsprintf文档中有一条说明:

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


0
投票

你能做的是:

cout << fixed << setprecision(2) << message << ">> Speed : "<< duration << endl;
© www.soinside.com 2019 - 2024. All rights reserved.