私の以前の質問予期しないときに丸められたdouble
usingを印刷していました。 using を完全な精度で印刷するにはどうすればよいでしょうか?cout
cout
double
ベストアンサー1
C++20では、std::format
これをする:
std::cout << std::format("{}", std::numbers::pi_v<double>);
出力(仮定)IEEE754 規格 double
):
3.141592653589793
デフォルトの浮動小数点形式は、往復保証付きの最短の10進数表現です。この方法のsetprecision
I/Oマニピュレータと比較した利点は、不要な数字を出力せず、グローバル状態の影響を受けないことです(このブログ投稿詳細については)。
その間、{fmt} ライブラリは、std::format
に基づいています。{fmt} は、print
これをさらに簡単かつ効率的にする関数も提供しています (ゴッドボルト):
fmt::print("{}", M_PI);
質問では「完全な精度」が何を意味するのかは実際には定義されていません。通常は、10進数で往復するのに十分な精度として理解されますが、別の可能性はありますが、あり得ない解釈もあります。(有効な)小数点以下の最大桁数IEEE 754 倍精度の場合、後者は 767 桁になります。
免責事項: 私は {fmt} と C++20 の作者ですstd::format
。