Float.IntBitsToFloat(Int32) 方法

定义

返回对应于 float 给定位表示形式的值。

[Android.Runtime.Register("intBitsToFloat", "(I)F", "")]
public static float IntBitsToFloat (int bits);
[<Android.Runtime.Register("intBitsToFloat", "(I)F", "")>]
static member IntBitsToFloat : int -> single

参数

bits
Int32

整数。

返回

float具有相同位模式的浮点值。

属性

注解

返回对应于 float 给定位表示形式的值。 根据 IEEE 754 浮点“单格式”位布局,参数被视为浮点值的表示形式。

如果参数为 0x7f800000,则结果为正无穷大。

如果 参数为 0xff800000,则结果为负无穷大。

如果参数是范围 0x7f800001 中的任意值, 0x7fffffff 或范围到 0xff8000010xffffffff的任何值,则结果为 NaN。 Java 提供的 IEEE 754 浮点运算无法区分具有不同位模式的同一类型的两个 NaN 值。 NaN 的非重复值只能通过使用 Float.floatToRawIntBits 方法进行区分。

在所有其他情况下,let sem 是三个可通过 参数计算的值:

<blockquote>

{@code
            int s = ((bits >> 31) == 0) ? 1 : -1;
            int e = ((bits >> 23) & 0xff);
            int m = (e == 0) ?
                            (bits & 0x7fffff) << 1 :
                            (bits & 0x7fffff) | 0x800000;
            }

</blockquote>

然后浮点结果等于数学表达式的值,&中点;m·2<sup> e-150</sup>。

请注意,此方法可能无法返回 float 与 参数完全相同的位模式的 int NaN。 IEEE 754 区分两种 NaN:安静 NaN 和 信号 NaN。 这两种 NaN 之间的差异在 Java 中通常不可见。 对向 NaN 发出信号的算术运算会将它们转换为具有不同但通常相似的位模式的安静 NaN。 但是,在某些处理器上,仅复制信号 NaN 也会执行该转换。 具体而言,复制一个信号 NaN 以将其返回到调用方法可能会执行此转换。 因此 intBitsToFloat ,可能无法返回 float 具有信号 NaN 位模式的 。 因此,对于某些 int 值, floatToRawIntBits(intBitsToFloat(start)) 可能 等于 start。 此外,哪些特定位模式表示信号 NaN 依赖于平台;尽管所有 NaN 位模式(静默或信号)都必须在上面标识的 NaN 范围内。

java.lang.Float.intBitsToFloat(int)Java 文档。

此页面的某些部分是基于 创建和共享的工作进行的修改,并根据 署名许可中所述的条款使用。

适用于