2012-04-04 12 views
3

グローバル精度を単精度(float)と倍精度(double)で1回宣言したので、floatとdoubleの両方に対してfscanfを使用するにはどうすればよいですか...実行するときに毎回変更する必要がありますfloatとdoubleの両方からファイルを読み込みますか?

fscanf(fp1,"%lf", &a[i][j]); 

はので、両方のために動作する方法と、それを毎回変更する必要がありますされ、単一の(%のF)で異なるタイプのダブル(%のLF)で

に変換しますか?

+1

)':あなたは "の#define" Sを使用している場合

あるいは、あなただけのような何かを行うことができますあなたが渡したパラメータのタイプに応じて? – Mysticial

+0

@Mysticial: 'printf'に' float'を渡すことは不可能です... –

+1

私は 'scanf()'を意味しました。しかし、ええ、私の質問はまだ成立しています。 – Mysticial

答えて

3

私はCでコーディングしていたのでしばらくしていましたので、実験で確認したいかもしれませんが、すべての単精度浮動小数点は有効な倍精度浮動小数点型なので、fscanfで '%lf'一時的な倍精度浮動小数点数に格納し、ロジックを使用してそれを正しい変数に代入します。自動的にfloat`と `double``の間で選択するためにあなたは `のprintf(たいわけ

#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]); 
関連する問題