2013-03-19 7 views
5

値プリントアウト:C - フロート私は値をとり、このような値を出力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++のプログラムと一致するようにしたいと思います。どんな助けもありがとう。

ありがとうございました。

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

printf("%6.4lf", number); 

版画「セル」の6文字の4つの小数点以下:

+1

Cの結果がC++に一致するように変更したいのですか? –

+0

正しいですが、私はCの結果がC++と一致するようにします。 – FidelCashflo

答えて

8

はCフォーマットされた印刷文の長さと精度指定子を利用してください。

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

int precision = 4; 

printf("%6.*lf", precision, number); 
8

はC++ iostream

std::cout.precision(4); 
std::cout << std::setw(10) << number << "\n"; 
4
printf("%g\n", number); 
の長さと精度指定子を活用します

問題を解決します。%lfはdoubleに使用され、%fはfloatに使用され、%gはfloatに使用され、すべての小数点を表示して0を切り捨てたいとします。

関連する問題