我在大学项目上工作,需要43,000,000这样的大数字,但每次启动程序时,它都会给我这样的43000,000。我已经使用了std :: fixed和precision但它没有添加第二个逗号。
这是代码:
self.tableView.separatorColor = UIColor.clear
我需要帮助,我已经处理了这个问题好几个小时了。
答案 0 :(得分:1)
大多数情况下,您的输出取决于您的默认语言环境。您需要覆盖整个区域设置或您感兴趣的区域设置的一部分。
下面的代码可以帮助您覆盖负责以数字打印逗号的部分语言环境。
#include <iostream>
#include <sstream>
#include <iomanip>
#include <locale>
struct Sep3Digit : std::numpunct<char> {
std::string do_grouping() const { return "\003"; }
};
std::string FormatWithCommas(double d)
{
std::stringstream ss;
ss.imbue(std::locale(std::cout.getloc(), new Sep3Digit));
ss << std::fixed << d;
return ss.str();
}
int main()
{
std::cout<<FormatWithCommas(std::numeric_limits<double>::max())<<std::endl;
return 0;
}
答案 1 :(得分:0)
您通常可以执行with default system locale:
#include <locale>
string toString(){
stringstream s;
s << endl;
s.imbue(std::locale("")); // <-- set locale. OR: std::locale("en_US")
s << std::fixed << std::setprecision(1) << "Precio en colones: "<<PreEnCol() << endl;
return s.str();
}
请注意,这会在世界某些地方将43000000
打印为43,000,000
,或者在43.000.000
用作分组分隔符的其他地方打印为'.'
。
#include <locale>
#include <string>
#include <iostream>
#include <sstream>
#include <iomanip>
using namespace std;
string toString(int n)
{
stringstream s;
s << endl;
s.imbue(std::locale("")); // <-- set locale
s << std::fixed << std::setprecision(1) << "Precio en colones: "<< n << endl;
return s.str();
}
int main()
{
int n = 43000000;
cout << "formatted " << n << ": " << toString(n) << endl;
}
它产生这个输出:
formatted 43000000:
Precio en colones: 43,000,000