加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 计算第N个浮点数

发布时间:2020-12-15 00:43:19 所属栏目:Java 来源:网络整理
导读:使用32位浮点数,我认为有类似2 ^ 31 – 1可表示的浮点数.在 java中,您可以使用现有的float并使用Math库查找“next float”.但是,假设你没有起始浮点数,有没有办法计算第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),结果最终会开始减少,但现在应该已经足够好了.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读