J'essaye de mettre en forme la devise, en utilisant le code ci-dessous comme test.WinGW g ++ put_money iomanip donne un résultat inattendu
long double mon = 1234567.45; // or std::string mon = "123.45";
std::cout.imbue(std::locale(""));
std::cout << "normal: " << mon << std::endl;
std::cout << "formated: " << std::showbase << std::put_money(mon*100) << std::endl;
Mais j'obtiens un résultat inattendu.
g++ -std=c++0x -O1 -g3 -Wall -c -fmessage-length=0 -o tst.o tst.cpp
g++ -o tst tst.o
normal: -2.64326e-199
formated: 526296518301961010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
J'utilise g ++ version 4.8.1, sur Win10
Sur ma machine Ubuntu, en utilisant la version 4.8.4 (Ubuntu 4.8.4-2ubuntu1 ~ 14.04). Je reçois le résultat correct suivant.
normal: 1,12346e+06
formated: € 1 123 456,45
Que se passe-t-il?