Я работаю с бустом класс cpp_dec_float, но не может получить строку из него с правильными региональными настройками (десятичный символ и символ группировки).
Глядя на код повышения, это выглядит как внутренняя функция str () — всегда вставляет «.» символ как десятичная точка. Смотрите format_float_string в number_base.
Вот что я получаю с обычным двойным:
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, поскольку это внесет некоторую неточность.
Задача ещё не решена.
Других решений пока нет …