私はコードの次の部分を持っています:
string v;
getline(linestream,v,' ');
double d=atof(v.c_str());
fprintf(writeFile3,"%f\n",(double)d);
しかし、最初の行の値は 0.08012901 ですが、d=0.080129 の最後の 2 つの値が省略されているとしましょう。完全な double 値を取得するにはどうすればよいですか?
ありがとうございました
数字を正確にコピーしたい場合、最も簡単な方法は、数字を文字列形式のままにしておくことです。
string v;
getline(instream, v, ' ');
outstream << v;
数字を に変換し、値を出力するほとんどすべてのものdouble
は、入力とはわずかに異なる結果を生成する可能性が少なくともあります。
に小数点以下の桁数が格納されていないわけではありませんd
。fprintf
デフォルトでは小数点以下6桁しか出力されないだけです。8を印刷するには、試してください
fprintf(writeFile3, "%.8f\n", d);
すでに 型でd
あるため、 としてキャストする必要はありません。double
double
上記の回答に、変数呼び出しの後に置くものは何でも表示されるということを追加します。デフォルトでは、C++ は 6 を表示します。
すなわち fprintf(writeFile3, "%.3f\n", (double)d); 最後に小数点以下 3 桁を表示します。また、パディングされるので、小数点以下 8 桁を超える可能性がある場合は、それ以上にする必要があります。すべての小数点を表示するようにフラグを設定することはできません。明示的でなければなりません。