使用32位浮点数,可以表示大约2^31-1个不同的浮点数。在Java中,您可以使用Math库获取现有浮点数并找到“下一个浮点数”。但是假设您没有起始浮点数,是否有一种方法可以计算第n个浮点数?如果有一个有库函数的语言,我就要它。
当然,我可以将所有浮点数放入数组中并索引到该数组中,但这会占用空间。
以下是更进一步的说明。我可以从Float.MIN开始,并使用nextFloat递增N次,但这似乎效率低下,因为我需要执行此操作多次。
这取决于您想要它们如何排序。请注意,并非所有浮点数都进行了排序;例如,一对不同的NaN是无序的(即,它们不相等,但两者都不大于另一个)。
如果您不介意最终得到这些结果,可以将整数重新解释为浮点数。这种方法因语言而异;以下是C实现:
float int_to_float(uint32_t in) {
union {
float f;
uint32_t i;
} u;
u.i = in;
return u.f;
}
0xFF
指数位,但它们在技术上不是 NaN... - Louis Wasserman
nextUp
或者你提到的其他函数呢?C和C++都没有提供这样的标准函数。你需要自己编写。 - dirkgently