我怎样才能对浮点数和双精度进行 fscanf,因为我在单精度 (float) 和双精度 (double) 中声明了一个全局精度......所以当我运行它时,我每次转换时都必须更改它不同的类型
双 (%lf) 单 (%f)
fscanf(fp1,"%lf", &a[i][j]);
那么有没有一种对两者都有效且无需每次都更改的方法?
我怎样才能对浮点数和双精度进行 fscanf,因为我在单精度 (float) 和双精度 (double) 中声明了一个全局精度......所以当我运行它时,我每次转换时都必须更改它不同的类型
双 (%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]);