Depends on how you look at it, and what you need to use the information for.
If you just need to display the version, sure, it would be nice just getting a string back. But this isn't a very common task, compared to the much more common: checking if you're running on a supported platform. It's much
easier bitshifting and checking than it is to convert a string or floating-point value... besides, with the following code snippet in MSDN, what's the worry?
DWORD dwVersion, dwMajorVersion, dwMinorVersion, dwBuild;
dwVersion = GetVersion();
// Get the Windows version.
dwMajorVersion = (DWORD)(LOBYTE(LOWORD(dwVersion)));
dwMinorVersion = (DWORD)(HIBYTE(LOWORD(dwVersion)));
// Get the build number.
if (dwVersion < 0x80000000)
dwBuild = (DWORD)(HIWORD(dwVersion));
else // Windows Me/98/95
dwBuild = 0;
printf("Version is %d.%d (%d)\n",