複雑な計算を行うためにいくつかのパラメータ(すべてタイプdouble
)をファイルに書きました。私はそうのようなファイルにパラメータを記述します。より精度の高いファイルに数値を書く - C++
refStatsOut
が
ofstream
パラメータである
refStatsOut << "SomeParam:" << value_of_type_double << endl;
。このようなパラメータは、それぞれタイプがdouble
の4つです。ファイルに書き込まれているのが実際の値とは異なります(精度の低下の点で)。たとえば、value_of_type_double
の値が-28.07270379934792だった場合、ファイルに書かれているものは-28.0727となります。
また、これらの統計情報が計算されて書き込まれると、これらの統計情報を使用するさまざまなプログラムを実行します。ファイルは読み込まれ、最初に値はstd::strings
として保存され、次にdouble
にatof
の機能によって変換されます。これは、私が上に示した値をもたらし、計算をさらに崩壊させます。
1.任意の精度を失わないように1がファイルに(タイプdouble
などの)値を書き込むことが可能な解像度を向上させる方法はあります:
私の質問はこれですか?
2. からdouble
に変換すると、atof
で変換できますか?もしそうなら、私はこれを解決するために他にどんな機能を使うことができますか?
P.S:この質問の詳細の一部が明確でない場合はお知らせください。私はそれらを更新して詳細を提供しようとします。
お返事ありがとうございます。しかし、小数点以下の桁数が毎回異なるため、精度を動的に設定できる方法はありますか?それ、どうやったら出来るの? – Sriram
@Sriram - あなたはprintfやfprintfに戻すことができます。柔軟な書式指定子を使用できます。 http://www.cplusplus.com/reference/clibrary/cstdio/printf/ – Leon