я предполагаю, чтобы позволить пользователю вводить в виде строки c «ххх, ххх, ххх.хх» (х — цифры). Поэтому, если я введу «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;
}
Кажется, твой вопрос состоит из двух частей:
Как десятичные числа всегда отображаются точно с двумя дробными цифрами. Ответ на этот вопрос заключается в настройке потока для использования fixed
форматирование и точность 2:
std::cout << std::setprecision(2) << std::fixed;
Другая часть вопроса, кажется, спрашивает, как создать тысячи разделителей. Ответ на этот вопрос заключается в использовании std::locale
с подходящим std::numpunct<char>
фасет, например:
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';
}
Других решений пока нет …