単精度(float)と倍精度(double)でグローバル精度を宣言したので、floatとdoubleの両方をfscanfするにはどうすればよいですか...実行すると、変換するたびに変更する必要があります別のタイプ
ダブル(%lf)でシングル(%f)
fscanf(fp1,"%lf", &a[i][j]);
それで、両方のために働く方法があり、毎回それを変更する必要はありませんか?
単精度(float)と倍精度(double)でグローバル精度を宣言したので、floatとdoubleの両方をfscanfするにはどうすればよいですか...実行すると、変換するたびに変更する必要があります別のタイプ
ダブル(%lf)でシングル(%f)
fscanf(fp1,"%lf", &a[i][j]);
それで、両方のために働く方法があり、毎回それを変更する必要はありませんか?
Cでコーディングを行ってからしばらく経ちましたので、実験で確認することをお勧めしますが、すべての単精度浮動小数点数は有効な倍精度浮動小数点数であるため、fscanfで「%lf」を使用して一時的に保存できます。倍精度浮動小数点数を使用してから、ロジックを使用して正しい変数に割り当てます。
または、「#define」を使用している場合は、次のようにすることができます。
#define USE_DOUBLE
#ifdef USE_DOUBLE
#define STORTYPE double
#define SCANSTRING "%lf"
#else
#define STORTYPE float
#define SCANSTRING "%f"
#endif
...
STORTYPE a[x][y];
fscanf(fp1,SCANSTRING, &a[i][j]);