我正在使用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的解决方案,因为这样做会带来一些不准确性。