Преобразование Boost Multiprecision в строку с текущими настройками локали - PullRequest
0 голосов
/ 27 ноября 2018

Я работаю с классом повышения 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, так как это приведет к некоторой неточности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...