C++ 如何分组小数点?

C++ 如何分组小数点?,c++,C++,我想得到x=1234567890.098765432,1 #include <iostream> #include <string> #include <iomanip> #include <locale> using namespace std; struct separated : numpunct<char> { string do_grouping() const { return "\03"; } }; int

我想得到
x=1234567890.098765432,1

#include <iostream>
#include <string>
#include <iomanip>
#include <locale>
using namespace std;


struct separated : numpunct<char>
{
    string do_grouping() const { return "\03"; }
};


int main()
{
    const double x = 1234567890.0987654321;
    locale our_local(cout.getloc(), new separated);
    cout.imbue(our_local);
    cout << fixed;
    cout << setprecision(10);
    cout << "x = " << x << endl;
    return 0;
}
#包括
#包括
#包括
#包括
使用名称空间std;
结构分离:numpunct
{
字符串do_grouping()常量{return“\03”;}
};
int main()
{
常数双x=1234567890.0987654321;
本地语言环境(cout.getloc(),新分隔);
课程灌输(我们的本地);
cout这里有一个算法:

创建一个以要转换的数字为参数的函数。将该数字转换为字符串。扫描字符串以查找小数点(同时注意可能出现的非数字结果,如无穷大或不确定)。如果找到,则处理字符串的其余部分,在每三位数字后插入分隔符,在到达字符串结尾或非数字时停止(例如,
E
以指定指数)。返回此字符串


作为附加练习,创建此函数的一个版本,该版本可以作为操纵器传递给
cout

是否有任何国家使用的不是约定?@Jarod42:无需坚持文化,因为它仅用于个人用途,以简化调试模式下的可读性。区域设置分组仅适用于e小数点,切勿指向右侧的数字。请参阅cppreference.com上的格式定义。您必须将浮点数拆分为整数和小数部分,并分别输出它们,以便将分组应用于这两个部分。