如何使"std::cout << 123456789.12"打印"123456789.12"?



如何制作

std::cout << 123456789.12

打印:

123456789.12

它总是打印如下内容:

1.23457e+008

我知道我必须玩弄这些旗子,但我不太清楚正确的组合。如果我设置了固定标志,它会打印

123456789.120000

如何…

?

单向:-

#include <iostream>
#include <iomanip>
int main() {
    double f =123456789.12;
    std::cout << std::fixed << std::setprecision(2) << f << 'n';
    return 0;
}

看到

请寻找合适的参考

您可以使用:

#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包具有所有内置类型的特征。浮点数(float/double/long double)的特征之一是digits10属性。这定义了以10为基数的浮点数的精度。

现场观看:http://ideone.com/Ity9m7


要继续阅读,请查看另一个类似的问题:如何使用cout以完全精度打印双精度值?

可以这样使用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

相关内容

  • 没有找到相关文章

最新更新