Поскольку вы используете wchar_t
версии Win32-функций, вы должны использовать swprintf
вместо sprintf
:
float fp = 2.3333f;
const size_t len = 256;
wchar_t buffer[len] = {};
swprintf(buffer, L"%f", fp);
MessageBox(hWnd, buffer, L"Error", MB_OK);
Чтобы избежать возможных переполнений буфера, вы также можете использовать _snwprintf
:
float fp = 2.3333f;
const size_t len = 256;
wchar_t buffer[len] = {};
_snwprintf(buffer, len - 1, L"%f", fp);
MessageBox(hWnd, buffer, L"Error", MB_OK);
Или еще лучше, используйте std::wostringstream
, объявленный в <sstream>
:
float fp = 2.3333f;
std::wostringstream ss;
ss << fp;
MessageBox(hWnd, ss.str().c_str(), L"Error", MB_OK);