簡體   English   中英

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

[英]How do I make “std::cout << 123456789.12” print “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以完全精度打印double值?

你可以使用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找到

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM