値を取り込んで次のように値を出力するC++プログラムがあります。
getline(in,number);
cout << setw(10) << number << endl;
値を取り込んで次のように出力する同等のCプログラムがあります。
fscanf(rhs, "%e", &number);
printf("%lf\n", number);
ただし、C++プログラムが出力する間、0.30951
Cプログラムは0.309510
を出力します。その他の例:C++:0.0956439
C:0.095644
。値が7桁の長さである限り、同じ結果を出力するように見えますが、7桁より短い場合は、最後に0が追加されます。また、7桁より長い場合は、6桁に切り捨てられます。 Cの結果をC++プログラムと一致させたいのですが。どんな助けでもいただければ幸いです。
ありがとう。
注:数値は浮動小数点数であり、数値はファイルから読み取られます。
C形式のprintステートメントで長さと精度の指定子を利用します。
printf( "%6.4lf", number );
6文字幅の「セル」に小数点以下4桁を印刷します。
長さまたは精度のいずれかにワイルドカード文字を使用して、実行時にその値を提供できます。
int precision = 4;
printf( "%6.*lf", precision, number );
C++の長さと精度の指定子を利用するiostream
s
std::cout.precision(4);
std::cout << std::setw(10) << number << "\n";
printf("%g\n", number);
問題を解決します。小数点以下すべてを表示してゼロを切り取りたい場合は、%lfをdoubleに、%fをfloatに、%gをfloatに使用します。