次のようなファイルへの出力を取得しようとしています。
1.11111
11.1111
111.111
1111.11
111111
言い換えれば、精度ではなく、出力の重要性を設定しようとします。私はもう試した
oFile <<setprecision(6);
と
fprintf(oFile, "%6f", varName);
無駄に。
どんな助けでも大歓迎です。
乾杯
編集:不完全な質問で申し訳ありません。最小限、完全、かつ検証可能な例を次に示します。
#include<iostream>
#include<fstream>
#include<iomanip>
using namespace std;
int main() {
ofstream oFile("output.dat");
float var1 = 10.9993;
float var2 = 11;
oFile << var1 << endl;
oFile << var2 << endl;
oFile << std::setprecision(6) << var2 - var1 <<endl; //10.9993 - 11 = -0.000699997
oFile.close();
/*
* output
* 10.9993
* 11
* 0.000699997
*/
FILE * oFile2;
oFile2 = fopen("output2.dat","w");
fprintf(oFile2, "%6f \n%6f \n%6f \n",var1, var2, var2-var1);
fclose(oFile2);
/*
* output
* 10.999300
* 11.000000
* 0.000700
*/
}
したがって、精度に関係なく、すべての場合で最大6桁の有効数字が必要です。つまり、次のようになります。
10.9993
11 or 11.0000 that does not matter
0.00070
わかりましたので、各変数を小数点から乗算し、減算して、小数点に戻しました。これはうまくいくようです。C++ で意味を設定する機能がないように見えるのはクレイジーです。