Преобразование Boost Multiprecision в строку с текущими настройками локали

Я работаю с бустом класс 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, поскольку это внесет некоторую неточность.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …