使用当前语言环境设置将Boost Multiprecision转换为字符串

时间:2018-11-27 09:54:42

标签: c++ boost boost-multiprecision

我正在使用boost cpp_dec_float class,但是无法使用正确的区域设置(十进制符号和分组符号)从中获取字符串。

看一下增强代码,看起来内部str()函数总是插入一个'。'。字符作为小数点。请参见number_base中的format_float_string。

这是我得到常规双打的结果:

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 个答案:

没有答案