我正在尝试将所有浮点数生成到 C++ 上的文件中(使用 gcc)。我的第一次尝试是使用FLT_MIN
, FLT_MAX
&FLT_EPSILON
来生成它们,代码是这样的:
#include <cfloat>
#include <stdio.h>
#include <iostream>
using namespace std;
int main(){
FILE* handle = freopen("todos_los_float.in","w",stdout);
for(float x = FLT_MIN; x < FLT_MAX; x = x + FLT_EPSILON)
cout << x << endl;
fclose(handle);
return 0;
}
这是行不通的,因为 FLT_EPSILON 破坏了数字的精度,因为FLT_MIN
它需要一个巨大的跳跃,并且在达到FLT_MAX
.
我曾考虑过工作和添加二进制形式,只是跳过特殊含义(inf、-inf、NaN),但我也不确定哪种方法是最好的方法。你建议如何生成数字?