4

C では、次のようなステートメントがあります。

printf("%6.3f ",floatNumber);

印刷時の桁数を制限します。
で同様の動作を実現するにはどうすればよいC++ですか? 私は知っsetprecisionていますが、それは私がまったく同じことをするのに役立ちません.

4

2 に答える 2

7

%6.3f標準の iostream マニピュレータのみを使用して指定されたものと同様の形式を取得するには、次のようにします。

std::cout << std::fixed << std::setw(6) << std::setprecision(3) << f;

具体的には、フォーマット文字列std::fixedと同じ基本フォーマットを示します。fたとえば、'precision' は、フォーマット文字列と ostream の両方で同じことを意味します。std::setprecision(3)次に、実際に精度をstd::setw(6)設定し、フィールド幅を設定します。設定しstd::fixedないと、書式文字列で指定されたものと同様の書式が得られます"%6.3g"

setwこれらのマニピュレータ以外はスティッキーであることに注意してください。つまり、1 つの変数が出力された後も有効なままです。

于 2013-01-25T18:44:26.940 に答える
4

あなたの最良の選択肢は、を使用することboost::formatです。ドキュメント、特にを参照してください

次善の策 (boostプロジェクトで使用できない場合) は、 を使い続けることprintfです。#include <stdio.h>これは C++ 標準ライブラリの一部であるため、常に好きな限り「問題なく動作する」はずです。

于 2013-01-25T16:03:23.127 に答える