No, ti stanno dicendo un'altra cosa. Ti stanno dicendo che il tipo “float” non è quello giusto per trattare le valute perché soggetto a problemi di errori di rappresentazione abbastanza rognosi da trattare.
Dovresti usare un tipo CURRENCY oppure la classe COleCurrency che incapsula il tipo Currency più adatto allo scopo.
Limitatamente al problema che hai posto invece, un codice che può risolvere è questo (esempio)
#include <sstream>
using namespace std;
void Test()
{
CString s;
float v = 1234.56;
ostringstream tmp;
tmp.imbue(locale(""));
tmp << v;
s = tmp.str().c_str();
MessageBox(NULL, s, "Test", 0);
}