输入逗号和小数

Inputting commas and decimals

本文关键字:小数 输入      更新时间:2023-10-16

我应该允许用户输入为C字符串"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] != ''; i++) {
            putchar(myStr[i]);
            decreaseDist = distToDot = i;
   
            if(i !=0 && decreaseDist > 0 && decreaseDist % 3== 0) {
                    tempStr[finalCount++] = ',';
            }
           
            tempStr[finalCount++] = myStr[i];
    }
    tempStr[finalCount] = '';
    return 0;
}

您的问题似乎分为两部分:

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

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

    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';
    }