-1

我假设允许用户输入为 ac 字符串“xxx,xxx,xxx.xx”(x 是数字)。因此,如果我输入“343,111,222.00”,那么输出将完全相同。所以问题是这是否是这样做的?我想我想做的是,如果用户输入“123456”,那么输出会自动输入“123,456.00”。任何建议/提示/批评表示赞赏。

    #include <stdio.h>
    #include <string.h>
    #include <iostream>
    #include <string>
 int main() {

    using namespace std;
char myStr[256];    
    char tempStr[256];
    double sum = 0; //Adding sum soon.
    int decreaseDist;

    cout << "Enter Any integers ";
     cin.getline(myStr,256);
    cout << endl;

    int finalCount = 0;

int i;
    long distToDot = tempStr[256] - 3;


for(i=0; myStr[i] != '\0'; i++) {
            putchar(myStr[i]);
            decreaseDist = distToDot = i;

    if(i !=0 && decreaseDist > 0 && decreaseDist % 3== 0)
                    {
                    tempStr[finalCount++] = ',';
            }

            tempStr[finalCount++] = myStr[i];
    }
    tempStr[finalCount] = '\0';

    return 0;
}
4

1 回答 1

0

看来,你的问题有两个部分:

  1. 十进制数字如何总是以两个小数位显示。这个问题的答案是将流设置为使用fixed格式和 2 的精度:

    std::cout << std::setprecision(2) << std::fixed;
    
  2. 问题的另一部分似乎询问如何创建数千个分隔符。这个问题的答案是使用std::locale具有合适std::numpunct<char>方面的 a,例如:

    struct numpunct
        : std::numpunct<char> {
        std::string do_grouping() const { return "\3"; }
    };
    int main() {
        std::cout.imbue(std::locale(std::locale(), new numpunct));
        std::cout << double(123456) << '\n';
    }
    
于 2013-10-20T20:45:25.510 回答