如何制作“std :: cout<< 123456789.12”print“123456789.12”?

时间:2014-03-13 15:25:07

标签: c++ decimal cout

如何制作

std::cout << 123456789.12

打印这个:

123456789.12

它总是打印出来:

1.23457e+008

我知道我必须玩旗帜,但我无法弄清楚正确的组合。如果我设置了固定标志,则打印

123456789.120000

3 个答案:

答案 0 :(得分:11)

如何...

单向: -

#include <iostream>
#include <iomanip>

int main() {
    double f =123456789.12;
    std::cout << std::fixed << std::setprecision(2) << f << '\n';
    return 0;
}

请参阅here

请查找适当的参考资料

答案 1 :(得分:1)

您可以使用:

#include <iostream>
#include <limits>
using namespace std;

int main() {
    double c = 123456789.12;
    cout.precision(numeric_limits<double>::digits10 + 1);
    cout << c << endl;

    return 0;
}

基本上limits package具有所有内置类型的特征。 浮点数(float/double/long double)的特征之一是digits10 attribute。这定义了基数10中浮点数的准确性。

现场直播:http://ideone.com/Ity9m7


要继续阅读,请查看另一个类似的问题:How do I print a double value with full precision using cout?

答案 2 :(得分:0)

您可以使用boost :: lexical_cast,如下所示:

#include <boost/lexical_cast.hpp>

std::cout << boost::lexical_cast<std::string>(123456789.12);

可以在http://www.boost.org/doc/libs/1_55_0/doc/html/boost_lexical_cast.html

中找到更多信息