Я работаю с классом повышения cpp_dec_float , но не могу получить из него строку с правильными региональными настройками (десятичный символ и символ группировки).
Глядя на код повышения, похоже, что внутренняя функция str () всегда вставляет «.»символ как десятичная точка.См. Format_float_string в number_base .
Это то, что я получаю с обычным double:
double d = 1494.33;
std::stringstream ss;
ss.imbue(std::locale(""));
ss << std::fixed << std::setprecision(6) << d;
std::cout << ss.str() << std::endl;
вывод 1.494,330000
Попытка сделать то же самое сdec_float:
boost::multiprecision::cpp_dec_float_50 df = 1494.33;
std::stringstream ss;
ss.imbue(std::locale(""));
ss << std::fixed << std::setprecision(6) << df;
std::cout << ss.str() << std::endl;
выводит 1494.330000
Я ищу решение, которое не позволяет преобразовать dec_float обратно в double, так как это приведет к некоторой неточности.