如何在浮动中放两个逗号?

时间:2017-04-18 04:12:45

标签: c++ numbers

我在大学项目上工作,需要43,000,000这样的大数字,但每次启动程序时,它都会给我这样的43000,000。我已经使用了std :: fixed和precision但它没有添加第二个逗号。

这是代码:

self.tableView.separatorColor = UIColor.clear

我需要帮助,我已经处理了这个问题好几个小时了。

2 个答案:

答案 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用作分组分隔符的其他地方打印为'.'

Here's full example

#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