8

値を取り込んで、次のような値を出力する 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.0956439C: 0.095644. 値が7桁の長さである限り同じ結果を出力するようですが、7桁より短い場合は、最後に余分な0が追加されます. また、7 桁を超える場合は 6 桁に切り捨てられます。C の結果が C++ プログラムと一致することを望みます。どんな助けでも大歓迎です。

ありがとう。

注: number は float で、number はファイルから読み取られます。

4

3 に答える 3

12

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

std::cout.precision(4);
std::cout << std::setw(10) << number << "\n";
于 2013-03-19T22:01:28.500 に答える
12

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

printf( "%6.4lf", number );

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

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

int precision = 4;

printf( "%6.*lf", precision, number );
于 2013-03-19T21:59:27.370 に答える
5
printf("%g\n", number); 

%lf は double に使用され、 %f は float に使用され、%g は float に使用され、すべての小数点以下の桁数を表示してゼロを切り捨てます。

于 2013-03-25T15:36:04.093 に答える