java – 计算第N个浮点数

前端之家收集整理的这篇文章主要介绍了java – 计算第N个浮点数前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
使用32位浮点数,我认为有类似2 ^ 31 – 1可表示的浮点数.在 java中,您可以使用现有的float并使用Math库查找“next float”.但是,假设你没有起始浮点数,有没有办法计算第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;
}

这有一个方便的属性,给你大部分有序的结果 – 传入零得到你0.0,一个得到你1.4e-45,2得到你2.8e-45,依此类推.一旦你进入NaN / Inf值,结果就会开始变得疯狂,一旦你达到0x80000000(-0.0),结果最终会开始减少,但现在应该已经足够好了.

猜你在找的Java相关文章