web-dev-qa-db-ja.com

C-浮動小数点値の出力

値を取り込んで次のように値を出力するC++プログラムがあります。

getline(in,number);
cout << setw(10) << number << endl;

値を取り込んで次のように出力する同等のCプログラムがあります。

fscanf(rhs, "%e", &number);
printf("%lf\n", number);

ただし、C++プログラムが出力する間、0.30951Cプログラムは0.309510を出力します。その他の例:C++:0.0956439 C:0.095644。値が7桁の長さである限り、同じ結果を出力するように見えますが、7桁より短い場合は、最後に0が追加されます。また、7桁より長い場合は、6桁に切り捨てられます。 Cの結果をC++プログラムと一致させたいのですが。どんな助けでもいただければ幸いです。

ありがとう。

注:数値は浮動小数点数であり、数値はファイルから読み取られます。

6
FidelCashflo

C形式のprintステートメントで長さと精度の指定子を利用します。

printf( "%6.4lf", number );

6文字幅の「セル」に小数点以下4桁を印刷します。

長さまたは精度のいずれかにワイルドカード文字を使用して、実行時にその値を提供できます。

int precision = 4;

printf( "%6.*lf", precision, number );
10
Bob Kaufman

C++の長さと精度の指定子を利用するiostreams

std::cout.precision(4);
std::cout << std::setw(10) << number << "\n";
8
printf("%g\n", number); 

問題を解決します。小数点以下すべてを表示してゼロを切り取りたい場合は、%lfをdoubleに、%fをfloatに、%gをfloatに使用します。

4