【问题标题】:How to establish a bidirectional one-to-one mapping between float and int values in Java?如何在 Java 中建立 float 和 int 值之间的双向一对一映射?
【发布时间】:2016-11-04 07:15:36
【问题描述】:

众所周知,在 Java 中,float 和 int 都需要 4 个字节来存储在原始数组中。因此,浮点值可以映射到具有相同内部 32 位表示的 int 值。

如何在 float 和 int 之间建立计算成本低廉的一对一映射?例如,映射可以将 3.2345f 映射到 -67567575 并将 -67567575 映射回接近 3.2345f 的值,并且可以覆盖大多数浮点值(可以忽略 NaN 或 Infinity)。映射的顺序或含义无关紧要。

(我需要这个的原因是为了解决关于我正在实现的 jcuda 内核函数的问题;使用其他方法对我的问题更麻烦。需要直接回答这个问题,而不是推荐其他方法等等第四)

【问题讨论】:

    标签: java floating-point int


    【解决方案1】:

    您可以使用Float.floatToIntBits(floatValue) 进行float->int 转换,使用Float.intBitsToFloat(intValue) 进行int->float 转换。正如 intBitsToFloat 的 javadoc 所述:

    公共静态浮点 intBitsToFloat(int bits)

    返回对应于给定位表示的浮点值。

    还有一个:

    public static int floatToIntBits(float value)

    根据 IEEE 754 浮点“单一格式”位布局返回指定浮点值的表示。

    【讨论】:

      猜你喜欢
      • 2021-09-15
      • 2014-11-15
      • 1970-01-01
      • 2010-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-04
      • 1970-01-01
      相关资源
      最近更新 更多